Still no release, but I made some progress lately. I added most of the ARM instruction set, and also parts of the PS2 and PSP specific instructions. Still a lot to go, though.
I also added conditional statements and macros, though both probably still need some testing. This piece of code:
.macro myli,dest,value
.if value < 0x10000
ori dest,r0,value
.elseif (value & 0xFFFF8000) == 0xFFFF8000
addiu dest,r0,value & 0xFFFF
.elseif (value & 0xFFFF) == 0
lui dest,value >> 16
.else
lui dest,value >> 16 + ((value & 0x8000) != 0)
addiu dest,dest,value & 0xFFFF
.endif
.endmacro
.macro myrolv,destreg,sourcereg,shiftreg
subu r1,r0,shiftreg
srlv r1,sourcereg,r1
sllv destreg,sourcereg,shiftreg
or destreg,r1
.endmacro
myli a1,0FFEE0000h
myli a0,15h
myrolv v0,a1,a0
will assemble to this.
lui a1,0xFFEE
ori a0,r0,0x15
subu r1,r0,a0
srlv r1,a1,r1
sllv v0,a1,a0
or v0,r1