124 lines
1.6 KiB
NASM
124 lines
1.6 KiB
NASM
#subruledef reladdr {
|
|
{addr: u32} => {
|
|
reladdr = addr - $ - 2
|
|
assert(reladdr <= 0x7f)
|
|
assert(reladdr >= !0x7f)
|
|
reladdr`8
|
|
}
|
|
}
|
|
|
|
#ruledef
|
|
{
|
|
pass => 0x00
|
|
not => 0x01
|
|
times2 => 0x02
|
|
clrtos => 0x03
|
|
square => 0x0D
|
|
sextb => 0x0E
|
|
sexth => 0x0F
|
|
add => 0x12
|
|
sub => 0x13
|
|
gt => 0x14
|
|
lt => 0x15
|
|
sgt => 0x16
|
|
slt => 0x17
|
|
and => 0x18
|
|
or => 0x19
|
|
xor => 0x1A
|
|
shl => 0x1B
|
|
asr => 0x1C
|
|
mul => 0x1D
|
|
addi {n: u8} => 0x22 @ n
|
|
subi {n: u8} => 0x23 @ n
|
|
gti {n: u8} => 0x24 @ n
|
|
lti {n: u8} => 0x25 @ n
|
|
andi {n: u8} => 0x28 @ n
|
|
ori {n: u8} => 0x29 @ n
|
|
xori {n: u8} => 0x2A @ n
|
|
shli {n: u8} => 0x2B @ n
|
|
asri {n: u8} => 0x2C @ n
|
|
muli {n: u8} => 0x2D @ n
|
|
swap => 0x30
|
|
dup => 0x34
|
|
drop => 0x38
|
|
over => 0x3C
|
|
fetchdw => 0x40
|
|
fetchdb => 0x44
|
|
fetchrw => 0x48
|
|
fetchrb => 0x4C
|
|
storedw => 0x50
|
|
storedb => 0x54
|
|
pstoredw => 0x58
|
|
pstoredb => 0x5C
|
|
rtod => 0x60
|
|
dtor => 0x64
|
|
jump => 0x68
|
|
jumpz => 0x6C
|
|
jumpnz => 0x70
|
|
call => 0x74
|
|
callz => 0x78
|
|
callnz => 0x7C
|
|
ret => 0x80
|
|
retz => 0x84
|
|
retnz => 0x88
|
|
pushdb {n: u8} => 0x8C @ n
|
|
pushdr {n: reladdr} => 0x8C @ n @ 0x0E
|
|
pushdhu {n: u16} => 0x90 @ n
|
|
pushdwu {n: u32} => 0x94 @ n
|
|
pushdha {n: u16} => 0x98 @ n
|
|
pushdwa {n: u32} => 0x9C @ n
|
|
repeati {n: reladdr} => 0xA0 @ n
|
|
|
|
db {n: u8} => n
|
|
dh {n: u16} => n
|
|
dd {n: u32} => n
|
|
}
|
|
|
|
pushdb 8
|
|
|
|
start: pushdb 0x8
|
|
pushdb fiter
|
|
call
|
|
pushdb start
|
|
jump
|
|
|
|
pushdb 0x10
|
|
next: pushdb 4
|
|
add
|
|
pushdb next
|
|
jump
|
|
|
|
div: push0
|
|
swap
|
|
rot
|
|
divnx: over
|
|
sub
|
|
dup
|
|
ltz
|
|
hopzi divdn
|
|
swap
|
|
inc
|
|
swap
|
|
hopi divnx
|
|
divdn: drop
|
|
drop
|
|
ret
|
|
|
|
fib: dup
|
|
retz
|
|
dtor
|
|
push0
|
|
pushdb 1
|
|
fiter: over
|
|
add
|
|
swap
|
|
repeati fiter
|
|
drop
|
|
ret
|
|
|
|
strlen: push0
|
|
swap
|
|
dup
|
|
fetchdb
|
|
|