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 после выполнения сложения заставляет его воспринимать это как актуальную математическую задачу с целыми числами, так сказать.

Другие вопросы по тегам