Извините, если этот вопрос повторяется - я искал похожие, но ничего не нашел. Кроме того, я должен сказать, что я новичок в ассемблере (на x86, по крайней мере)x86 Сборка: сравнение (синтаксис GAS)
Я считаю, что стандартный способ реализации прыжками в x86 является сделать ваше сравнение с чем-то вроде:
cmpl %ebx, %eax
какие магазины результат в EFLAGS регистре, а затем выполните следующую команду прыжок использует этот EFLAGS регистр:
je some_label
Но что, если я хочу, чтобы сохранить результат сравнения, чтобы сделать прыжок позже? Я думал о делать что-то вроде:
cmpl %eax, %ebx
je storetrue
storefalse: pushl $0
jmp done
storetrue: pushl $1
done:
...
Нужно ли мне делать это так, или есть более прямой способ, который не требует дополнительных прыжков?
[Флаги регистрируются - мы можем их читать или писать напрямую?] (Http://stackoverflow.com/q/1406783/995876) – Esailija
Использовать [условное перемещение] (http://x86.renejeschke.de/html/ file_module_x86_id_34.html). –
Это полезно, но это не объясняет точно, как получить результат сравнения при создании копии (par of) регистра флагов – AlexJ136