Пока я не должен перечислять весь 4-строчный образец, который я даю, (так как это вопрос с домашним заданием), я смущен, как это следует читать и переводить в C.x86-64 Сборка «cmovge» до кода C
cmovge %edi, %eax
То, что я понимаю, до сих пор является то, что команда представляет собой условный ход, когда результат> =. Он сравнивает первый параметр функции %edi
с целым регистром %eax
(которому было присвоено другое значение параметра %esi
в предыдущей строке кода сборки). Однако я не понимаю его результата.
Моя проблема заключается в толковании оптимизированного кода. Он не манипулирует стеком, и я не уверен, как записать это в C (или, по крайней мере, переключатель gcc
, который я мог бы использовать для создания того же результата при компиляции).
Не могли бы вы дать несколько небольших примеров того, как инструкция cmovge
может перевести на C-код? Если это не имеет смысла в качестве собственной строки кода, не стесняйтесь что-то делать с этим.
Это сборка x86-64 через виртуальную операционную систему Linux (CentOS 7).
Читали реф руководство insn: HTML извлечь здесь: http://escrow.aliexpress.com //www.felixcloutier .com/x86/CMOVcc.html. Дополнительные ссылки в [wiki для x86] (http://stackoverflow.com/tags/x86/info). –