MIC IJVM简单的2位数之和

时间:2018-01-06 20:39:50

标签: assembly ascii cpu-architecture alu ijvm

关于IJVM中计算的一个简单问题,因为我在他们的文档中找不到解决方案。

假设我们需要执行以下计算:

BIPUSH 0x32 // PUSH 2
BIPUSH 0x33 // PUSH 3
IADD // PUSH sum(2,3)
OUT // output: "e"
  

IADD ---->从堆栈中弹出两个单词;推动他们的总和

我知道解决方案可能是直截了当的,但对于我的生活,我不记得如何将加法/输出转换为实际数字。 如何使它输出“5”而不是这个愚蠢的“e”? :)

干杯。

1 个答案:

答案 0 :(得分:0)

正如所料,这个问题的答案非常简单。这实际上找到答案是非常矛盾的,因为在文档的任何地方似乎都没有人提到这一点。真棒。

解决方案:

BIPUSH 0x32 // PUSH 2
BIPUSH 0x33 // PUSH 3
IADD // PUSH sum(2,3)
DUP
BIPUSH 0x30 // PUSH 0
ISUB // subtract 0
OUT 

或实际代码:

plus:
    ILOAD X
    ILOAD Y
    IADD
    DUP
    BIPUSH 0x30
    ISUB
    GOTO return // Dominykas Tautkus. Linkėjimai prodekanui. :)

执行加法后减去0会强制它将其视为具有整数的实际数学任务。