基于寄存器架构和基于栈架构
区别
二者之间使用的指令集不同
寄存器架构
三地址与二地址形式的指令集
三地址指令集
op dest, src1, src21
2a = b + c
// add a, b, c
arm处理器的主要指令集就是三地址形式的
二地址指令集
op dest, src1
2a += b
// add a, b
x86系列的处理器就是二地址形式的
栈架构
零地址指令
零地址意味着源和目标d都是隐含参数,其实现依赖与栈
这个栈指的是求值栈(evaluation stack,也叫做operand stack“操作数栈”或者expression stack“表达式栈”)
1 | //原本应该没有注释2333 |
由于指令的源和目标都是隐含的,所以可以用更少的空间放入更多的指令.
但是一般零地址指令要完成一件事情,会比二地址/三地址指令用更多条指令.