1 # r0, r4-r6 are used as tmps, consider them call clobbered by these macros.
12 ldi32 0x7fffc,sp ; TODO -- what's a good value for this?
15 ; Exit with return code
42 ; Load an immediate value into a general register
43 ; TODO: use minimal sized insn
44 .macro mvi_h_gr val reg
48 ; Load a general register into another general register
49 .macro mvr_h_gr src targ
53 ; Store an immediate into a word in memory
54 .macro mvi_h_mem val addr
59 ; Store a register into a word in memory
60 .macro mvr_h_mem reg addr
64 ; Load a word value from memory
65 .macro ldmem_h_gr addr reg
69 ; Add 2 general registers
70 .macro add_h_gr reg1 reg2
74 ; Increment a register by and immediate
75 .macro inci_h_gr inc reg
80 ; Test the value of an immediate against a general register
81 .macro test_h_gr val reg
82 .if (\val >= 0) && (\val <= 15)
85 .if (\val < 0) && (\val >= -16)
97 ; compare two general registers
98 .macro testr_h_gr reg1 reg2
105 ; Test the value of an immediate against a dedicated register
106 .macro test_h_dr val reg
111 ; Compare an immediate with word in memory
112 .macro test_h_mem val addr
117 ; Set the condition codes
123 ; Test the condition codes
124 .macro test_cc N Z V C