Простой способ преобразовать код c в x86 блок?

Существует ли простой способ (как бесплатная программа), который может тайный c/c ++ код к x86 блоку?

Я знаю, что любой компилятор C делает что-то очень похожее и что я могу просто скомпилировать код c и затем демонтировать соответствовавший исполняемый файл, но это - вид излишества, все, что я хочу, должен преобразовать несколько строк кода.

Кто-либо знает о некоторой программе, которая может сделать это?

Править: Я знаю, что компилятор GCC делает это, но это - синтаксис AT&T, и я ищу синтаксис Intel (не уверенный, если это назвало синтаксис Intel или не). Синтаксис AT&T немного походит на мусор мне, и некоторые команды используют операнды в обратном порядке и не, как я привык к, и это может стать действительно сбивающим с толку.

19
задан Anderson Green 9 May 2013 в 23:01
поделиться

9 ответов

Gcc может сделать это с ключом -S, но синтаксис & t будет отвратительно уродливым.

14
ответ дан 30 November 2019 в 01:53
поделиться

Ваш компилятор уже делает это, как вы заявили, и, скорее всего, есть возможность остановиться перед сборкой.

Для GCC добавьте флаг -S .

gcc -S x.c
cat x.s

Изменить: Если ваша программа довольно короткая, вы можете использовать онлайн-сервис по адресу https://gcc.godbolt.org/ .

3
ответ дан 30 November 2019 в 01:53
поделиться

, если вы используете gcc в качестве компилятора, вы можете скомпилировать с параметром -S для создания кода сборки. см. http://www.delorie.com/djgpp/v2faq/faq8_20.html

1
ответ дан 30 November 2019 в 01:53
поделиться

GCC может выводить синтаксическую сборку Intel с помощью следующей командной строки:

gcc -S input.c -o output.asm -masm=intel
46
ответ дан 30 November 2019 в 01:53
поделиться

В VC ++ можно использовать следующую команду для вывода списка ассемблерного кода.

cl / FAs a.c

0
ответ дан 30 November 2019 в 01:53
поделиться

Компилятор lcc - это мультиплатформенный кросс-компилятор. Вы можете заставить его производить синтаксический ассемблерный код Intel

lcc -S -Wf-target=x86/win32 foo.c

. Я считаю, что ассемблерный код из lcc значительно легче читается, чем то, что gcc сейчас выплевывает.

7
ответ дан 30 November 2019 в 01:53
поделиться

gcc сгенерирует сборку, если вы передадите ему параметр -S в командной строке.

Microsoft Visual C ++ делает то же самое с параметром / FAs .

13
ответ дан 30 November 2019 в 01:53
поделиться

Как отмечают многие, большинство компиляторов это делают. Если вам не нравится синтаксис, можно немного поработать с awk или sed. Или я был бы удивлен, если бы не было программы, которая сделала бы это за вас, уже где-то написано.

0
ответ дан 30 November 2019 в 01:53
поделиться

внимание каждая архитектура имеет свои собственные уникальные имена и даже строится по-разному теперь, когда вы знаете, какие стеки используются, использование asm volatile было бы идеальным решением

0
ответ дан 30 November 2019 в 01:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: