MIC IJVM простая сумма из 2 цифр
Просто простой вопрос относительно расчетов в IJVM, так как я не смог найти решение в их документации.
Предположим, нам нужно выполнить следующий расчет:
BIPUSH 0x32 // PUSH 2
BIPUSH 0x33 // PUSH 3
IADD // PUSH sum(2,3)
OUT // output: "e"
IADD ----> Сложи два слова из стека; подтолкнуть их сумму
Я знаю, что решение, вероятно, прямо вперед, но я не могу вспомнить, как преобразовать сложение / вывод в реальные цифры. Как заставить его вывести "5" вместо этой глупой "е"?:)
Приветствия.
1 ответ
Как и ожидалось, ответ на эту проблему был очень простым. Это очень противоречит фактическому нахождению ответа, так как никто, кажется, не удосужился упомянуть об этом где-либо в документах. Потрясающие.
Решение:
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 после выполнения сложения заставляет его воспринимать это как актуальную математическую задачу с целыми числами, так сказать.