On Sep 6, 2008, at 8:32 PM, Richard Erlacher wrote:
>> The assembler generates relocatable object files. The linker
>> translates those relocatable addresses into absolute addresses, and
>> writes the resulting memory image to the output file.
>>
> I know what a linker does for a living. I just don't know why I'd
> have to
> use one when my object code is probably going to be no larger than
> 64 kB.
> That would probably only amount to about 25-30 k-lines of code,
> depending on
> tables sizes, etc, and that shouldn't require a linker be involved
> at all.
Because the assembler outputs relocatable object files, not
absolute binaries. Nearly all assemblers do this, whether their
inputs are absolutely-addressed or not.
>> If all of your addresses are explicitly defined, then the linker
>> has very little to do other than generate the memory image to the
>> output file. No modern assembler that I'm aware of generates binary
>> (or hex-ified binary) files directly; asx8051 is no exception.
>>
> Most of the assemblers I've used over the years do exactly that, as
> they're
> processor-specific and not intended for use together with other tools.
This is actually rather rare. Yes, it does happen (CP/M's
assembler comes to mind) but it's not the norm.
> So
> you're saying this one isn't able to generate .hex and .omf files
> directly,
> is that right?
The assembler? No, it's not. That's the linker's job.
> Do you know of any assemblers, not associated with one
> compiler or another, that behave in this way? I've not encounterd
> them,
> though I've used numerous compiler/assembler/linker/debugger
> suites. I'm
> sure I've got at least a half-dozen assemblers that simply take a
> source
> file and produce .hex or, in the case of MOT processors, .s19 output.
I've got a few myself. None that are at all recent, though.
> Since I'd see no need for a linker in this context, I'd never have
> looked at
> the linker doc's to find out how to drive the assembler and
> generate the
> necessary output. This is useful information.
Understood. I can see how that'd be particularly confusing. Just
think of what you're used to as being the "assembler" as being split
into two components; that's probably the easiest way to envision this
setup.
-Dave
--
Dave McGuire
Port Charlotte, FL
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Sdcc-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sdcc-user