Jak používat gcc pro generování assembleru v syntaxi Intel?

hlasů
130

gcc -SMožnost vygeneruje kód assembleru v AT & T syntaxe, je tu způsob, jak vytvářet soubory v syntaxi Intel? Nebo je tam způsob, jak převést mezi těmito dvěma?

Položena 14/10/2008 v 04:52
zdroj uživatelem
V jiných jazycích...                            


3 odpovědí

hlasů
170

Zkoušeli jste to?

gcc -S -masm=intel test.c

Nevyzkoušený, ale našel jsem ji v tomto fóru , kde někdo tvrdil, že pracoval pro ně.

Jen jsem se snažil to na mac a to propadlo, takže jsem se podíval na mé manuálové stránce:

   -masm=dialect
       Output asm instructions using selected dialect.  Supported choices
       are intel or att (the default one).  Darwin does not support intel.

Může pracovat na vaší platformě.

Pro Mac OS X:

clang++ -S -mllvm --x86-asm-syntax=intel test.cpp

Zdroj: https://stackoverflow.com/a/11957826/950427

Odpovězeno 14/10/2008 v 05:36
zdroj uživatelem

hlasů
15

The

gcc -S -masm=intel test.c

Má se mnou. Ale mohu říci jinou cestu, i když to nemá nic společného s tekoucí gcc. Kompilace spustitelný soubor nebo strojového kódu, a pak rozebrat objektový kód v ASM Intel syntaxi s objdump jak je uvedeno níže:

 objdump -d --disassembler-options=intel a.out

To by mohlo pomoci.

Odpovězeno 12/04/2011 v 17:50
zdroj uživatelem

hlasů
5

Mám tento kód do CPP souboru:

#include <conio.h>
#include <stdio.h>
#include <windows.h>

int a = 0;
int main(int argc, char *argv[]) {
    asm("mov eax, 0xFF");
    asm("mov _a, eax");
    printf("Result of a = %d\n", a);
    getch();
    return 0;
 };

To je kód pracoval s tímto příkazového řádku GCC:

gcc.exe File.cpp -masm=intel -mconsole -o File.exe

To bude mít za následek soubor * .exe, a fungovalo to v mých zkušeností.

Notes:
immediate operand must be use _variable in global variabel, not local variable.
example: mov _nLength, eax NOT mov $nLength, eax or mov nLength, eax

A number in hexadecimal format must use at&t syntax, cannot use intel syntax.
example: mov eax, 0xFF -> TRUE, mov eax, 0FFh -> FALSE.

To je vše.

Odpovězeno 26/05/2012 v 19:30
zdroj uživatelem

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more