program = [ Inst.LUI(5,0x10001000), ] for i in range(10): program.append(Inst.ADDI(rd[6],rs[0],seg_pattern[i])) program.append(Inst.SB(rd[5],rs[6],i)) program_main = [ Inst.LUI(rd[6], 0x04000000), Inst.ADD(rd[7],rs[0],rs[0]), Inst.LW(rd[10], rs[6], 0x48), 'mainloop', Inst.ADD(rd[8],rs[7],rs[5]), Inst.ANDI(rd[11],rs[10],0x01), Inst.LBEQ(rd[11],0,'dontpush'), 'push', Inst.LBU(rd[9],rs[8],0), Inst.SB(rd[6],rs[9],0x000), Inst.ADDI(rd[7],rs[7],1), Inst.LJAL(0,'mainloop'), 'dontpush', Inst.SB(rd[6],rs[9],0x000), Inst.LJAL(0,'mainloop') ] program.extend(program_main) r = asm(program)
Inst.SB(_addrBase, 0, 0x0D), Inst.SB(_addrBase, 0, 0x0E), Inst.SB(_addrBase, 0, 0x10), Inst.SB(_addrBase, 0, 0x1B), Inst.SB(_addrBase, 0, 0x11), Inst.SB(_addrBase, 0, 0x1C), Inst.SB(_addrBase, 0, 0x12), Inst.SB(_addrBase, 0, 0x1D), Inst.SB(_addrBase, 0, 0x13), Inst.SB(_addrBase, 0, 0x1E), Inst.SB(_addrBase, 0, 0x14), Inst.SB(_addrBase, 0, 0x1F), Inst.SB(_addrBase, 0, 0x21), Inst.SB(_addrBase, 0, 0x2E), Inst.ANDI(_pattern0, _pattern0, 0), Inst.ANDI(_pattern1, _pattern1, 0), Inst.ANDI(_pattern2, _pattern2, 0), Inst.ANDI(_pattern3, _pattern3, 0), Inst.SH(_addrBase, _pattern0, 0x40), # [addrBase + 0x40] = pattern0 Inst.SH(_addrBase, _pattern1, 0x42), # [addrBase + 0x42] = pattern1 Inst.SH(_addrBase, _pattern2, 0x44), # [addrBase + 0x44] = pattern2 Inst.SH(_addrBase, _pattern3, 0x46), # [addrBase + 0x46] = pattern3 #WIN Inst.ADDI(_pattern0, 0,0b10010010), Inst.SLLI(_pattern0, _pattern0,0x8), Inst.ADDI(_pattern0, _pattern0,0b10010101), Inst.ADDI(_pattern1, 0,0b10010110),
from inst import Inst, asm, print_asm, print_ihex program = [ Inst.LUI(5, 0x04000000), Inst.ADDI(6, 0, 0xFF), Inst.LW(10, 5, 0x48), Inst.ANDI(11, 10, 0x01), Inst.BEQ(11, 0, 0x08), Inst.SB(5, 6, 0x000), Inst.JAL(0, 4), Inst.SB(5, 0, 0x000), Inst.JAL(0, -28) ] r = asm(program) print_asm(r) print() print_ihex(r)