gcc -S
AT & T sözdiziminde assembly kodu üretecektir seçenek Intel sözdiziminde dosyalar oluşturmak için bir yol var? Yoksa ikisi arasında dönüşümün bir yolu var mı?
gcc -S
AT & T sözdiziminde assembly kodu üretecektir seçenek Intel sözdiziminde dosyalar oluşturmak için bir yol var? Yoksa ikisi arasında dönüşümün bir yolu var mı?
Yanıtlar:
Bunu denedin mi?
gcc -S -masm=intel test.c
Test edilmedi, ancak birisinin kendileri için çalıştığını iddia ettiği bu forumda buldum .
Mac'te bunu denedim ve başarısız oldu, bu yüzden adam sayfama baktım:
-masm=dialect
Output asm instructions using selected dialect. Supported choices
are intel or att (the default one). Darwin does not support intel.
Platformunuzda çalışabilir.
Mac OSX için:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
prefix
/ noprefix
(Clang montajı tüketirse önemli olup olmadığından emin değildir).
The
gcc -S -masm=intel test.c
Benimle çalışıyor. Ama başka bir yol söyleyebilirim, ancak bu gcc çalışan ile ilgisi yoktur. Yürütülebilir dosyayı veya nesne kodu dosyasını derleyin ve Intel asm sözdizimindeki nesne kodunu objdump ile aşağıdaki gibi sökün:
objdump -d --disassembler-options=intel a.out
Bu yardımcı olabilir.
CPP dosyasında bu kodu var:
#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;
};
Bu kod bu GCC komut satırı ile çalıştı:
gcc.exe File.cpp -masm=intel -mconsole -o File.exe
Bu sonuç * .exe dosyası olacak ve benim deneyimim çalıştı.
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.
Bu kadar.
$ gcc -S -masm=intel -mconsole a.c -o a.out gcc: error: unrecognized command line option ‘-mconsole’
-o a.out
.s dosyası alamazsınız.
echo "packsswb mm0,[bp+si-0x54]" | llvm-mc-3.2 -x86-asm-syntax=intel
verirpacksswb -84(%bp,%si), %mm0