From: groepaz (groepaz_at_gmx.net)
Date: 2002-07-17 01:02:29
Hello Ullrich,
Wednesday, July 17, 2002, 12:44:19 AM, you wrote:
UvB> What if two align commands may not be combined because they are contrary to
UvB> each other like this:
UvB> module1.s:
UvB> --------------------
UvB> Label1: .align 2
UvB> .byte 0
UvB> --------------------
UvB> module2.s:
UvB> --------------------
UvB> Label2: .align 2
UvB> .byte 0
UvB> --------------------
UvB> If both are bound together by the linker, either Label1 or Label2 is on an odd
UvB> address if the assembler does not insert any alignment bytes. Assuming that
UvB> the program starts at an even address does not help does, and moving the code
UvB> at runtime does not help either.
if starts on even adress:
label1: .byte 0
.byte fill
label2: .byte 0
if starts on odd adress:
.byte fill
label1: .byte 0
.byte fill
label2: .byte 0
>> Maybe I missed the point of the problem, or left out some thoughts.
UvB> It is not really a problem, I was just hoping that groepaz complaint about
UvB> .align meant that he had a better solution than the current one. It is of
UvB> course possible to use .align if the program itself starts at an address
UvB> aligned to align-value, and the linker will even warn you if this condition is
UvB> not satisfied. However, code on the C64 starts at $801, so the prerequisites
UvB> for using .align are not there.
well sorry, i still dont get it :=P from my understanding, when i
write .align <something> somewhere in my code, the linker should be
able to put the symbol at a properly aligned adress (no matter where
the binary starts, that argument is funny really :=P as if you couldnt
calculate offsets from an odd adress :=)). it is ofcoz another
question how the linker solves that task, but its for sure no real
problem to implement. gcc's linker does it by simply inserting
padding-bytes for eg (and keeps wasted memory low by certain options
for sorting symbols). however in a 6510 environment there wont be to
many cases where you'd use .align in a way like that anyway, so wasted
memory shouldnt be much of an issue. much less than occasional bugs
caused by wrong alignment atleast ;=P
and however, the original cause for my complaint is a _classic_ case
where you'd use the .align feature of an assembler. really, if its not
useable for this (or only under limitations) its not quite useful at
all IMHO.
--
Best regards,
groepaz mailto:groepaz_at_gmx.net
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.
This archive was generated by hypermail 2.1.3 : 2002-07-17 01:02:46 CEST