0

所以,我在 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
4

0 回答 0