Re: Best tools for writing an assembler?

glen herrmannsfeldt <gah@ugcs.caltech.edu>
Mon, 24 Feb 2014 20:35:01 +0000 (UTC)

          From comp.compilers

Related articles
[7 earlier articles]
Re: Best tools for writing an assembler? tpphysik@gmail.com (=?ISO-8859-1?Q?Patrik_T=FAri?=) (2014-02-20)
Re: Best tools for writing an assembler? sebastien.fricker@gmail.com (=?ISO-8859-1?Q?S=E9bastien_Fricker?=) (2014-02-21)
Re: Best tools for writing an assembler? DrDiettrich1@aol.com (Hans-Peter Diettrich) (2014-02-21)
Re: Best tools for writing an assembler? bc@freeuk.com (BartC) (2014-02-22)
Re: Best tools for writing an assembler? noitalmost@cox.net (noitalmost) (2014-02-23)
Re: Best tools for writing an assembler? sebastien.fricker@gmail.com (=?ISO-8859-1?Q?S=E9bastien_Fricker?=) (2014-02-24)
Re: Best tools for writing an assembler? gah@ugcs.caltech.edu (glen herrmannsfeldt) (2014-02-24)
Re: Best tools for writing an assembler? gah@ugcs.caltech.edu (glen herrmannsfeldt) (2014-02-24)
Re: Best tools for writing an assembler? lkrupp@pssw.com (Louis Krupp) (2014-02-24)
Re: Best tools for writing an assembler? ivan@ootbcomp.com (Ivan Godard) (2014-02-24)
Re: Best tools for writing an assembler? ivan@ootbcomp.com (Ivan Godard) (2014-02-24)
Re: Best tools for writing an assembler? james.harris.1@gmail.com (James Harris) (2014-02-24)
Re: Best tools for writing an assembler? hu47121@usenet.kitty.sub.org (2014-02-25)
[8 later articles]
| List of all articles for this month |
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Newsgroups: comp.compilers
Date: Mon, 24 Feb 2014 20:35:01 +0000 (UTC)
Organization: Aioe.org NNTP Server
References: 14-02-018 14-02-025
Keywords: assembler, history, comment
Posted-Date: 24 Feb 2014 16:35:35 EST

Patrik Tzri <tpphysik@gmail.com> wrote:


> About using an existing assembler -- it's like writing Machine Description
> files for GCC right? Well my problem is that those stuff seemed quite complex
> and would take a while to understand all syntax and options, and then define
> all 'generalized' instructions.
> Any good "Getting Started" guide on that with any assembler or compiler which
> would make it easier to learn?
> [Adapting an assembler is much easier than retargeting a compiler.
> The assembler doesn't know anything about the semantics of
> instructions, just what field goes where. -John]


Some years ago, I used a system to assemble 8080, 6800, or 6809 code
using the OS/360 assembler. Each instruction is a macro, though many
call other macros to generate the appropriate addressing mode. Once
you get the addressing modes right, the rest are very easy to write,
mostly putting in the appropriate opcode and calling the one to do the
right address mode.


In addition, there was a program to generate motorola hex files from
OS/360 object files, and another to fix up the lising file. The usual
OS/360 assembler listing file has the generated code to the left of
each instruction. For a macro, you only see that if you have the macro
expansion shown. The fix-up program moves it up such that it is to the
left of the macro call, and then doesn't show the macro expansion (all
DC instructions).


It uses assembler arithmetic to generate little endian addresses on a
big endian system, using one byte (AL1) address constants.


Some of the assembler contentions remain, though, such as constants
still being in OS/360 format (X'1234') instead of the more traditional
intel form (01234H). I do remember taking some existing source and,
with just a little editing, getting it to assemble. Also, the comment
and label conventions will be those for the OS/360 assembler, but that
wasn't much of a problem. (As I remember, the intel assembler uses a
colon after a label, and the OS/360 assembler doesn't want one there.)


It is very convenient in that the host assembler does all the
keeping track of forward references.


-- glen
[This is a classic and very useful hack. The assembler for at least
one of IBM's minis, maybe the System 7, worked that way. -John]


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.