.data foodata: .word 42 .text footext: .macro test insn text="" .export \insn \insn: \insn \text .endm test abs r0 test addc "r1,r2" // A double forward slash starts a line comment test addi "r3, 1" # So does a hash test addu "r4, r5" // White space between operands should be ignored test and "r6,r7" ; test andi "r8,2" // A semicolon seperates statements test andn "r9, r10" test asr "r11, R12" // Uppercase R is allowed as a register prefix test asrc "r13" test asri "r14,0x1f" test bclri "r15,0" test bf footext test bgeni "sp, 7" // r0 can also be refered to as 'sp' test BGENI "r0, 8" // Officially upper case or mixed case test BGENi "r0, 31" // mnemonics should not be allowed, but we relax this... test bgenr "r1, r2" test bkpt test bmaski "r3,8" test BMASKI "r3,0x1f" test br . // Dot means the current address test brev r4 test bseti "r5,30" test bsr footext test bt footext test btsti "r6, 27" test clrc test clrf r7 test clrt r8 test cmphs "r9,r10" test cmplt "r11,r12" test cmplei "r11, 14" test cmplti "r13,32" test cmpne "r14, r15" test cmpnei "r0,0" test decf r1 test decgt r2 test declt r3 test decne r4 test dect r5 test divs "r6,r1" test divu "r8, r1" test doze test ff1 r10 test incf r11 test inct r12 test ixh "r13,r14" test ixw "r15,r0" test jbf footext test jbr fooloop test jbsr footext test jbt fooloop test jmp r1 test jmpi footext test jsr r2 test jsri footext test ld.b "r3,(r4,0)" test ld.h "r5 , ( r6, 2)" test ld.w "r7, (r8, 0x4)" test ldb "r9,(r10,0xf)" test ldh "r11, (r12, 30)" test ld "r13, (r14, 20)" test ldw "r13, (r14, 60)" test ldm "r2-r15,(r0)" .export fooloop fooloop: test ldq "r4-r7,(r1)" test loopt "r8, fooloop" test LRW "r9, [foolit]" test lrw "r9, 0x4321" // PC rel indirect .global foolit foolit: .word 0x1234 test lsl "r10,r11" test lslc r12 .literals // Dump literals table test lsli "r13,31" test lsr "r14,r15" test lsrc r0 test lsri "r1,1" test mclri "r4, 64" test mfcr "r2, cr0" test mov "r3,r4" test movf "r5, r6" test movi "r7, 127" test movt "r8, r9" test mtcr "r10, psr" test mult "r11, r12" test mvc r13 test mvcv r14 test neg r2 test not r15 test or "r0,r1" test rfi test rolc "r6, 1" test rori "r9, 6" test rotlc "r6, 1" test rotli "r2, 10" test rotri "r9, 6" test rsub "r3, r4" test rsubi "r5, 0x0" test rte test rts test setc test sextb r6 test sexth r7 test st.b "r8, (r9, 0)" test st.h "r10, (r11, 2)" test st.w "r12, (r13, 4)" test stb "r14, (r15, 15)" test sth "r0, (r1, 30)" test stw "r2, (r3, 0x3c)" test st "r4, (r5, 0)" test stm "r14 - r15 , (r0)" test stop test stq "r4 - r7 , (r1)" test subc "r7, r13" test subi "r14, 32" test subu "r9, r3" test sync test tstlt r5 test tstne r7 test trap 2 test tst "r14, r14" test tstnbz r2 test wait test xor "r15,r0" test xsr r11 test xtrb0 "r1, r1" test xtrb1 "r1, r2" test xtrb2 "r1, r0" test xtrb3 "r1, r13" test zextb r8 test zexth r4 clrc // These two instructions pad the object file clrc // out to a 16 byte boundary.