Re: executables

bob@cs.adelaide.edu.au (Bob Buckley)
Thu, 8 Dec 1994 01:40:10 GMT

          From comp.compilers

Related articles
executables tleylan@aloha.com (1994-11-30)
Re: executables tleylan@aloha.com (1994-12-03)
Re: executables johnm@cory.EECS.Berkeley.EDU (1994-12-04)
Re: executables fastyeald@cix.compulink.co.uk (1994-12-06)
Re: executables tleylan@aloha.com (1994-12-07)
Re: executables bob@cs.adelaide.edu.au (1994-12-08)
Re: executables htak@eskimo.com (1994-12-08)
Re: executables tleylan@aloha.com (1994-12-09)
executables htak@eskimo.com (1994-12-12)
Re: executables will@ccs.neu.edu (1994-12-12)
Re: executables rcheung@delos.stgt.sub.org (1994-12-17)
Re: executables tleylan@aloha.com (1994-12-17)
[6 later articles]
| List of all articles for this month |

Newsgroups: comp.compilers
From: bob@cs.adelaide.edu.au (Bob Buckley)
Keywords: linker, comment
Organization: Dept. of Comp. Sci., University of Adelaide
References: 94-12-019
Date: Thu, 8 Dec 1994 01:40:10 GMT

tleylan@aloha.com writes:
|> [Looking for info on generating Intel object files]


I guess the obvious solution is to use an assembler. But most of these
cost money.


The reason most books don't cover this is that the structure of .OBJ files
is complex and mostly boring. It's also pretty system specific. In the
same way a.out(4), COFF and ELF are pretty boring (and a bit complex).


Assembly for PCs is a pain - there is the memory model issue and branch
optimisation, ... and all this for a dead architecture (even MS is going
32-bit at last).


|> Thanks for any pointers... I'm determined to compile some arbitrary code
|> of my own design into an executable program before I die. <g>


In the MINIX system, Tanenbaum's compilers produce assembler and the
libraries are in assembler format. The assembler does both the linking and
loading - with the speed of modern machines, this isn't such a bad idea.
You could adapt this for DOS with a bit more work by using DEBUG to
produce .COM files - but you have to calculate addresses since the
assembler in DEBUG doesn't do labels properly. This gives you a no-cost
solution with a readable object file.


Or you could use the a.out format used in DJGPP C/C++/assembler which
should be much easier to work with (and you have an assembler to compare
your output to).


|[This is a very poorly documented area, one of the reasons I keep threatening
|to write a book on linkers and loaders. -John]


Just on the Intel .OBJ or will you do a.out, COFF, ELF, VMS .OBJ, ...?
And how many of the nasties will you cover - branch optimisation, segment
packing, ...? Apart from segmentation, much of the old (PDP-11) based
material of the 60s and 70s is still applicable in this area - but few
readers would know that.


Bob Buckley
[I haven't decided what to cover yet. There's always a tension between being
general enough to appeal to the maximum number of readers and being specific
enough to tell you everything you need to know about your favorite platform.
Probably I'll do the Intel format that Windows and OS/2 use, and the Unix
formats which, despite the added complication of ELF and DWARF, are still all
pretty much the same. -John]
--


Post a followup to this message

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