|
Useful objasm macros |
|
I don't like the DCx version of allocating storage, I'm used to the EQUx method provided by the BASIC assembler...
; EQUB <value>
MACRO
EQUB $var
DCB $var
MEND
; EQUW <value>
MACRO
EQUW $var
DCW $var
MEND
; EQUD <value>
MACRO
EQUD $var
DCD $var
MEND
; EQUS "<value>"
; For 'EQUS "something", 13, 0'
; you will need use DCB directly.
MACRO
EQUS $var
DCB "$var"
MEND
You might like to try something such as:
; EQUSZ "<value>"
MACRO
EQUSZ $var
DCB "$var", 0
MEND
though I've not tested this one.
stm_temp RLIST {R0-R3,R14}
ldm_temp RLIST {R0-R3,PC}
str_temp RLIST {R0-R3}
Then, in your code, instead of: STMFD R13!, {R0-R3, R14}
...
LDMFD R13!, {R0-R3, PC} STMFD R13!, stm_temp
...
LDMFD R13!, ldm_temp
The 'str_temp' version is for when you want to store/load without messing with R14/PC. The same is used for both loading and storing.