Существует ли простой способ (как бесплатная программа), который может тайный c/c ++ код к x86 блоку?
Я знаю, что любой компилятор C делает что-то очень похожее и что я могу просто скомпилировать код c и затем демонтировать соответствовавший исполняемый файл, но это - вид излишества, все, что я хочу, должен преобразовать несколько строк кода.
Кто-либо знает о некоторой программе, которая может сделать это?
Править: Я знаю, что компилятор GCC делает это, но это - синтаксис AT&T, и я ищу синтаксис Intel (не уверенный, если это назвало синтаксис Intel или не). Синтаксис AT&T немного походит на мусор мне, и некоторые команды используют операнды в обратном порядке и не, как я привык к, и это может стать действительно сбивающим с толку.
Gcc может сделать это с ключом -S, но синтаксис & t будет отвратительно уродливым.
Ваш компилятор уже делает это, как вы заявили, и, скорее всего, есть возможность остановиться перед сборкой.
Для GCC добавьте флаг -S
.
gcc -S x.c
cat x.s
Изменить: Если ваша программа довольно короткая, вы можете использовать онлайн-сервис по адресу https://gcc.godbolt.org/ .
, если вы используете gcc в качестве компилятора, вы можете скомпилировать с параметром -S для создания кода сборки. см. http://www.delorie.com/djgpp/v2faq/faq8_20.html
GCC может выводить синтаксическую сборку Intel с помощью следующей командной строки:
gcc -S input.c -o output.asm -masm=intel
В VC ++ можно использовать следующую команду для вывода списка ассемблерного кода.
cl / FAs a.c
Компилятор lcc
- это мультиплатформенный кросс-компилятор. Вы можете заставить его производить синтаксический ассемблерный код Intel
lcc -S -Wf-target=x86/win32 foo.c
. Я считаю, что ассемблерный код из lcc
значительно легче читается, чем то, что gcc
сейчас выплевывает.
gcc сгенерирует сборку, если вы передадите ему параметр -S
в командной строке.
Microsoft Visual C ++ делает то же самое с параметром / FAs
.
Как отмечают многие, большинство компиляторов это делают. Если вам не нравится синтаксис, можно немного поработать с awk или sed. Или я был бы удивлен, если бы не было программы, которая сделала бы это за вас, уже где-то написано.
внимание каждая архитектура имеет свои собственные уникальные имена и даже строится по-разному теперь, когда вы знаете, какие стеки используются, использование asm volatile было бы идеальным решением