logo - ¿Una forma sencilla de convertir el código c al ensamblado x86?
make a compiler in python (9)
Como mucha gente señala, la mayoría de los compiladores harán eso. Si no te gusta la sintaxis, un poco de trabajo con awk o sed debería poder traducir. O me sorprendería si no hubiera un programa que hiciera eso por ti ya escrito en alguna parte.
¿Existe una forma fácil (como un programa gratuito) que pueda convertir el código c / c ++ al ensamblado x86?
Sé que cualquier compilador c hace algo muy similar y que puedo simplemente compilar el código c y luego desensamblar el ejecutable cumplido, pero eso es una exageración, lo único que quiero es convertir algunas líneas de código.
¿Alguien sabe de algún programa que pueda hacer eso?
EDIT: Sé que el compilador GCC hace eso pero es la sintaxis de AT&T y estoy buscando la sintaxis de Intel (no estoy seguro de si se llama o no sintaxis Intel). Para mí, la sintaxis de AT&T se parece un poco al gibberish y algunos comandos usan operandos en orden inverso y no como estoy acostumbrado, y puede ser realmente confuso.
El compilador lcc
es un compilador multiplataforma. Puedes conseguir que produzca el código de ensamblaje de sintaxis de Intel al
lcc -S -Wf-target=x86/win32 foo.c
Creo que el código de ensamblaje de lcc
mucho más fácil de leer que lo que gcc
escupe hoy en día.
En VC ++, el siguiente comando se puede usar para listar el código de ensamblaje.
cl / FAs ac
GCC puede generar el ensamblaje de sintaxis Intel utilizando la siguiente línea de comando:
gcc -S input.c -o output.asm -masm=intel
Gcc puede hacerlo con el conmutador -S, pero será asquerosamente feo en la sintaxis de at & t.
Si está utilizando gcc como compilador, puede compilar con la opción -S para producir un código de ensamblaje. consulte http://www.delorie.com/djgpp/v2faq/faq8_20.html
Su compilador ya está haciendo eso como lo ha indicado, y lo más probable es que tenga una opción para detener antes de ensamblar.
Para GCC, agregue la bandera -S
.
gcc -S x.c
cat x.s
Editar: Si su programa es bastante corto, puede usar el servicio en línea en https://gcc.godbolt.org/ .
Tenga en cuenta que cada arquitectura tiene sus propios nombres únicos e incluso se construye de forma diferente ahora cuando sabe que las pilas involucradas con el uso de asm volatile serían la solución perfecta.
gcc generará el ensamblaje si le pasa la opción -S
en la línea de comandos.
Microsoft Visual C ++ hará lo mismo con la opción /FAs
.