关于IJVM中计算的一个简单问题,因为我在他们的文档中找不到解决方案。
假设我们需要执行以下计算:
BIPUSH 0x32 // PUSH 2
BIPUSH 0x33 // PUSH 3
IADD // PUSH sum(2,3)
OUT // output: "e"
IADD ---->从堆栈中弹出两个单词;推动他们的总和
我知道解决方案可能是直截了当的,但对于我的生活,我不记得如何将加法/输出转换为实际数字。 如何使它输出“5”而不是这个愚蠢的“e”? :)
干杯。
答案 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会强制它将其视为具有整数的实际数学任务。