所以,我在 Stack Machines & 3AC (Register) Machines 如何解释表达式方面有点挣扎。以这个表达式为例:
4 * 2 - 3
作为 3AC 机器(指令集具有三操作数,一种寄存器寄存器机器),我认为它看起来像这样
(注意 - 我使用 '#' 表示注释,很确定这不是正确的语法):
LOAD 4, r 0 #寄存器0存储4
LOAD 2, r 1 #寄存器1存储2
MUL r 0 , r 1 , r 0 # 寄存器 0 现在存储 8 (4 x 2)
LOAD 3, r 1 # 寄存器 1 现在存储 3
SUB r 0 , r 1 , r 0 # 寄存器 0 存储 5 (8 - 3)
对不起格式。我不知道如何在代码块中获取下标。
我认为堆栈机器看起来像这样:
LOAD 4
LOAD 2
MUL
LOAD 3
SUB # would this be 8 - 3 or 3 - 8?
NEG # if its 3 - 8 then I need to negate the top
PRINT # outputs the top of the stack
HALT