设计思路: 1字节opcode,多字节参数 高度抽象
opcode类型: -立即数指令 -移动寄存器指令 -算数运算 -移位,位运算 -分支处理,跳转指令 -栈操作 -函数调用 -系统功能调用 -按键指令
寄存器设计: R0-R15共16个寄存器,可以用4bit表示编号,大小32bit
堆栈设计: 执行栈 调用栈 循环栈
标志位: 除零标志 溢出标志 比较结果标志
nop
set
set_8,rd, // 将立即数放到寄存器rd中
set_16
set_32
move,rd,rs //将rs内容复制到rd寄存器
clear,rd //重置rd寄存器
加减乘除(立即数与寄存器,寄存器与寄存器)
inc,rd,
add,rd,rs
add2,rd,r1,r2
addi,rd,rs,
dec
sub
sub2
subi
mul,rd,rs
div
mod
and,rd,rs
or
not
xor
shl,rd, //左移
shr,rd, //右移
beq //比较相等 //和0,和imn,和寄存器
bne //比较不等
bgt //比较大于
bgeq //比较大于等于
jmp //无条件相对跳转
jtrue //成功跳转
jfalse //失败跳转
push
pop
pushall
popall
call, //保存PC指针
ret
key,,n //n10ms持续时间
key_cmpress,,n //n50ms持续时间
key_down,
key_up, //松开按键
stick,L|R,,n //n*50ms持续时间
stick_down,L|R,
stick_reset,L|R,
srv,,[args] //调用号系统命令(按键进阶、等待、获取时间戳等),具体命令参数使用的寄存器自行定义
end