1 .data 2foodata: .word 42 3 .text 4footext: 5 6.macro test insn text="" 7 .export \insn 8\insn: 9 \insn \text 10.endm 11 12 test abs r0 13 test addc "r1,r2" // A double forward slash starts a line comment 14 test addi "r3, 1" # So does a hash 15 test addu "r4, r5" // White space between operands should be ignored 16 test and "r6,r7" ; test andi "r8,2" // A semicolon seperates statements 17 test andn "r9, r10" 18 test asr "r11, R12" // Uppercase R is allowed as a register prefix 19 test asrc "r13" 20 test asri "r14,0x1f" 21 test bclri "r15,0" 22 test bf footext 23 test bgeni "sp, 7" // r0 can also be refered to as 'sp' 24 test BGENI "r0, 8" // Officially upper case or mixed case 25 test BGENi "r0, 31" // mnemonics should not be allowed, but we relax this... 26 test bgenr "r1, r2" 27 test bkpt 28 test bmaski "r3,8" 29 test BMASKI "r3,0x1f" 30 test br . // Dot means the current address 31 test brev r4 32 test bseti "r5,30" 33 test bsr footext 34 test bt footext 35 test btsti "r6, 27" 36 test clrc 37 test clrf r7 38 test clrt r8 39 test cmphs "r9,r10" 40 test cmplt "r11,r12" 41 test cmplei "r11, 14" 42 test cmplti "r13,32" 43 test cmpne "r14, r15" 44 test cmpnei "r0,0" 45 test decf r1 46 test decgt r2 47 test declt r3 48 test decne r4 49 test dect r5 50 test divs "r6,r1" 51 test divu "r8, r1" 52 test doze 53 test ff1 r10 54 test incf r11 55 test inct r12 56 test ixh "r13,r14" 57 test ixw "r15,r0" 58 test jbf footext 59 test jbr fooloop 60 test jbsr footext 61 test jbt fooloop 62 test jmp r1 63 test jmpi footext 64 test jsr r2 65 test jsri footext 66 test ld.b "r3,(r4,0)" 67 test ld.h "r5 , ( r6, 2)" 68 test ld.w "r7, (r8, 0x4)" 69 test ldb "r9,(r10,0xf)" 70 test ldh "r11, (r12, 30)" 71 test ld "r13, (r14, 20)" 72 test ldw "r13, (r14, 60)" 73 test ldm "r2-r15,(r0)" 74 .export fooloop 75fooloop: 76 test ldq "r4-r7,(r1)" 77 test loopt "r8, fooloop" 78 test LRW "r9, [foolit]" 79 test lrw "r9, 0x4321" // PC rel indirect 80 .global foolit 81foolit: 82 .word 0x1234 83 test lsl "r10,r11" 84 test lslc r12 85 .literals // Dump literals table 86 test lsli "r13,31" 87 test lsr "r14,r15" 88 test lsrc r0 89 test lsri "r1,1" 90 test mclri "r4, 64" 91 test mfcr "r2, cr0" 92 test mov "r3,r4" 93 test movf "r5, r6" 94 test movi "r7, 127" 95 test movt "r8, r9" 96 test mtcr "r10, psr" 97 test mult "r11, r12" 98 test mvc r13 99 test mvcv r14 100 test neg r2 101 test not r15 102 test or "r0,r1" 103 test rfi 104 test rolc "r6, 1" 105 test rori "r9, 6" 106 test rotlc "r6, 1" 107 test rotli "r2, 10" 108 test rotri "r9, 6" 109 test rsub "r3, r4" 110 test rsubi "r5, 0x0" 111 test rte 112 test rts 113 test setc 114 test sextb r6 115 test sexth r7 116 test st.b "r8, (r9, 0)" 117 test st.h "r10, (r11, 2)" 118 test st.w "r12, (r13, 4)" 119 test stb "r14, (r15, 15)" 120 test sth "r0, (r1, 30)" 121 test stw "r2, (r3, 0x3c)" 122 test st "r4, (r5, 0)" 123 test stm "r14 - r15 , (r0)" 124 test stop 125 test stq "r4 - r7 , (r1)" 126 test subc "r7, r13" 127 test subi "r14, 32" 128 test subu "r9, r3" 129 test sync 130 test tstlt r5 131 test tstne r7 132 test trap 2 133 test tst "r14, r14" 134 test tstnbz r2 135 test wait 136 test xor "r15,r0" 137 test xsr r11 138 test xtrb0 "r1, r1" 139 test xtrb1 "r1, r2" 140 test xtrb2 "r1, r0" 141 test xtrb3 "r1, r13" 142 test zextb r8 143 test zexth r4 144 clrc // These two instructions pad the object file 145 clrc // out to a 16 byte boundary. 146