只是一个关于 IJVM 计算的简单问题,因为我在他们的文档中找不到解决方案。
假设我们需要执行以下计算:
BIPUSH 0x32 // PUSH 2
BIPUSH 0x33 // PUSH 3
IADD // PUSH sum(2,3)
OUT // output: "e"
IADD ----> 从堆栈中弹出两个单词;推他们的总和
我知道解决方案可能很简单,但是对于我的一生,我不记得如何将加法/输出转换为实际数字。如何让它输出“5”而不是这个愚蠢的“e”?:)
干杯。
只是一个关于 IJVM 计算的简单问题,因为我在他们的文档中找不到解决方案。
假设我们需要执行以下计算:
BIPUSH 0x32 // PUSH 2
BIPUSH 0x33 // PUSH 3
IADD // PUSH sum(2,3)
OUT // output: "e"
IADD ----> 从堆栈中弹出两个单词;推他们的总和
我知道解决方案可能很简单,但是对于我的一生,我不记得如何将加法/输出转换为实际数字。如何让它输出“5”而不是这个愚蠢的“e”?:)
干杯。
正如预期的那样,这个问题的答案非常简单。这与实际找到答案非常矛盾,因为似乎没有人愿意在文档中的任何地方提及这一点。惊人的。
解决方案:
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 会迫使它将此视为具有整数的实际数学任务。