Я пытаюсь написать переводчик, который переводит язык VM на язык ассемблера Intel x86 (MASM). К сожалению, я не могу найти правильный перевод для lt (меньше), gt (больше) или eq (равно), но я ожидаю, что в наборе инструкций есть что-то подобное. Самое близкое, что я смог найти, это cmp (сравнить), за которым следует условный прыжок. Но ничего без прыжка.
Например, когда я хочу перевести if (x>1 и x‹3) do... код VM выглядит примерно так
push local 0
push constant 1
gt
push local 0
push constant 3
lt
and
if-goto IF_TRUE0
теперь моя проблема в том, что я не знаю, как перевести эти gt и lt, поскольку за ними непосредственно не следует прыжок, а они оба являются частью одного условия прыжка.
.if
и т. д. См. stackoverflow.com/a/15351291/56778 для Дополнительная информация. - person Jim Mischel   schedule 24.10.2013