mirror of
https://github.com/open-simh/simtools.git
synced 2026-02-06 08:26:04 +00:00
Update to latest released version of macro-11. Command run: git subtree pull --prefix=crossassemblers/macro11 ../macro11 macro11-v0.7.2 (should be equivalent to git subtree pull --prefix=crossassemblers/macro11 git://gitlab.com/Rhialto/macro11.git macro11-v0.7.2)
77 lines
1.8 KiB
Plaintext
77 lines
1.8 KiB
Plaintext
.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
|