Instruction: zzzzz.qqqqq.oooooo z = target q = source o = opcode zzzzz.ooooo.111111 z = target o = opcode ooooo.11111.111111 o = opcode register: gp registers sp, pc r28 = 0 or 1 (dep. on opcode) r29,30,31 = immediate value .248 Opcodes: load: zzzzz.aaaaa.ww00aa load r <- (mem) store: aaaaa.qqqqq.ww10aa store (mem) <- r ww: data width: 1,2,4,8 aa: addressing mode: 00: r = (r) 01: r = (r+dis) 10: r = (r++) 11: functions, others, see below extended: zzzzz.qqqqq.xxx.100 diadic reserved zzzzz.qqqqq.xxx.101 diadic reserved zzzzz.ooooo.ooo.110 monadic, except: ooooo.ooooo.111.110 other alu: zzzzz.qqqqq.xxxx.11 zzzzz.qqqqq.0000.11 add ? TODO: .1248 pointer, index in array zzzzz.qqqqq.0001.11 sub ? TODO: .1248 pointer zzzzz.qqqqq.0010.11 and zzzzz.qqqqq.0011.11 or zzzzz.qqqqq.0100.11 xor zzzzz.qqqqq.0101.11 sl zzzzz.qqqqq.0110.11 sr zzzzz.qqqqq.0111.11 sru zzzzz.qqqqq.1000.11 mulu zzzzz.qqqqq.1001.11 divu zzzzz.qqqqq.1010.11 remu zzzzz.qqqqq.1011.11 mul ? zzzzz.qqqqq.1100.11 div zzzzz.qqqqq.1101.11 rem ? zzzzz.qqqqq.1110.11 cmp zzzzz.qqqqq.1111.11 ? mono: zzzzz.ooooo.ooo.110 zzzzz.00000.000.110 in (n),r zzzzz.00001.000.110 out (n),r zzzzz.00010.000.110 cpl zzzzz.00011.000.110 neg zzzzz.00100.000.110 mul 10 zzzzz.00101.000.110 divu 10 zzzzz.00110.000.110 div 10 zzzzz.00111.000.110 test (cmp to zero) zzzzz.010xx.000.110 incr .1248 pointer zzzzz.011xx.000.110 incr .1248 pointer zzzzz.100xx.000.110 sl .248 pointer, array zzzzz.101xx.000.110 sr .248 pointer, array zzzzz.11xxx.000.110 zzzzz.000xx.001.110 r = n .248 signed zzzzz.001xx.001.110 (n) = r .1248 zzzzz.01Sxx.001.110 r = (n) .1248 S: 0=unsigned, 1=signed zzzzz.10Sxx.001.110 extend .124 S: 0=unsigned, 1=signed zzzzz.11xxx.001.110 zzzzz.xxxxx.010.110 r = n unsigned zzzzz.xxxx0.011.110 addq n zzzzz.xxxx1.011.110 subq n zzzzz.xxxxx.100.110 sl n zzzzz.xxxxx.101.110 sru n zzzzz.xxxxx.110.110 sr n other: ooooo.ooooo.111.110 32 push registers 0..31 32 pop registers 0..31 1 ei 1 di 1 halt 1 in (r0),r1 1 out (r0),r1 1 inir r0,r1,r2 1 outir r0,r1,r2 1 memcpy r0,r1,r2 1 memclr r0,r1,r2 4 memchr r0,r1,r2 .1248 1 trap n 2 call +n .24 1 ret 2 jp .24 10 jp cc .2 eq,ne, lt,le,ge,gt, ult,ule,uge,ugt