0

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

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

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

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

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

干杯。

4

1 回答 1

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 会迫使它将此视为具有整数的实际数学任务。

于 2018-01-07T00:15:34.770 回答