Для эмулятора asm я пытаюсь написать, чтобы преобразовать код ASM в эквивалентный рабочий код, просто работающий ... лучший код был бы тот, который можно сделать одной строкой или двумя-тремя, не заботится о скорости.
Насколько я понимаю. MOVZX будет тем же самым, что и MOV .. если он выполняется на C ++.
MOV
преобразование.
MOV ESI,DWORD PTR [ESP+8]
будет похоже на преобразование
regs.d.esi = *(unsigned int *)(regs.d.esp+0x00000008);
MOVZX
.
MOVZX EAX,BYTE PTR DS:[EDI]
было бы похоже на
regs.d.eax = *(unsigned char *)(regs.d.edi);
почти то же самое, без каких-либо изменений.
Теперь MOVSX
У меня проблемы с преобразованием в простой код C ... похоже, такой же, как и два выше ... за исключением того, что он пытается добавить столько же полностью установленных битов перед значением перемещен по мере возможности .. например,
000000C7
становится FFFFFFC7