我试图通过一个例子找出堆栈机器和基于寄存器的机器之间的区别:
堆栈机就像这样:1.push 1 push 2 push 3
2.pop 3 pop 2 push 6
3.pop 6 pop 1
4.push 7
因此我们需要许多操作来进行上述计算。但是,在基于寄存器的机器中,我们没有任何推送或弹出操作,但是指令需要有操作数的寄存器。
有些例子是这样的:
R1(register) --> operand:1
R2 --> operand:2
R3 --> operand:3
如何表达寄存器VM中的等效操作?
答案 0 :(得分:2)
在smali中,这是基于dalvik bytecode的寄存器的汇编语言,它将类似于
const v0, 2 # v0 = 2
const v1, 3 # v1 = 3
mul-int v0, v0, v1 # v0 = v0 * v1
# v0 is now 6
const v1, 1 # v1 = 1
add-int v0, v0, v1 # v0 = v0 + v1
# v0 is now 7