.TITLE Test references that need (no) relocation .PSECT FOO,I,RW .WORD 42 Y: .WORD 0 ; absolute expression since the offset to the pc is a ; subtraction of the relative address of Y from the current ; position, both in the same psect. Such an operation renders ; an absolute value. CLR Y ; relocatable, since the absolute address of Y is unknown because ; it's in a psect that can be moved around at link time. CLR @#Y ; relocatable because even though X is at a known address, the ; address of the instruction is unknown and subject to the location ; of the psect, which is only decided at link time. CLR X ; absolute since it is an expression only dependent on an ; absolute value. CLR @#X ; Test AMA (uses absolute addresses rather than pc-relative) .enabl AMA ; Could be relative, as above, but AMA forces it to @#Y and ; then it needs relocation again, weirdly enough. clr Y ; Same as @#X. clr X .dsabl AMA .ASECT .=1000 X=1234 ; relocatable because the address of Y is in another psect, and ; the subtraction of a relative address from an absolute renders ; a relative value. CLR Y ; relocatable because the absolute address of Y is unknown. ; MACRO-11 only have a relative value of Y. CLR @#Y ; absolute since the offset to the pc is an expression subtracting ; two absolute values which obviously have an absolute result. CLR X ; absolute since it is an expression only dependent on an ; absolute value. CLR @#X ; Note that all references to Y contains 000002. This is because ; that is the offset of Y within the psect. This is added to the ; base of the psect (the part that comes from this object file), ; which is all the linker will know about. ; Test AMA .enabl AMA ; Same as @#Y. clr Y ; Same as @#X. clr X .dsabl AMA .END