VM 指令:0 1 dup 11 == 17 9 if jmp swap over + swap 1 + 2 jmp swap print
地址 | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
指令 | 0 | 1 | dup | 11 | == | 17 | 9 | if | jmp | swap | over | + | swap | 1 | + | 2 | jmp | swap |
解释:
压栈 0 1
-
dup 复制栈顶元素
-
11 == 比较栈顶元素是否等于 11
-
17 9 if 若栈顶元素等于 11,则跳转到第 17 行指令;否则跳转到第 9 行指令
-
jmp 无条件跳转
-
swap 交换栈顶两个元素
-
over 复制栈顶元素的上一个元素
-
+
相加栈顶两个元素 -
swap 交换栈顶两个元素
-
1 + 加 1
-
2 jmp 无条件跳转
-
print 输出栈顶元素
最终输出:55
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 W1ndysの小屋!
评论