답변:
이것을 시도 했습니까?
gcc -S -masm=intel test.c
테스트를 거치지 않았지만 누군가가 그것을 위해 일한다고 주장한 이 포럼 에서 발견되었습니다 .
방금 Mac에서 이것을 시도했지만 실패했기 때문에 맨 페이지를 보았습니다.
-masm=dialect
Output asm instructions using selected dialect. Supported choices
are intel or att (the default one). Darwin does not support intel.
플랫폼에서 작동 할 수 있습니다.
Mac OSX의 경우 :
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
prefix
/를 무시합니다 noprefix
(Clang이 어셈블리를 소비하는지 중요하지 않은지).
그만큼
gcc -S -masm=intel test.c
나와 함께 작동합니까? 그러나 이것은 다른 방법으로 말할 수 있지만 gcc를 실행하는 것과는 아무런 관련이 없습니다. 실행 파일 또는 객체 코드 파일을 컴파일 한 후 다음과 같이 objdump를 사용하여 Intel asm 구문으로 객체 코드를 디스 어셈블하십시오.
objdump -d --disassembler-options=intel a.out
도움이 될 수 있습니다.
이 코드는 CPP 파일에 있습니다.
#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;
};
이 코드는이 GCC 명령 줄에서 작동했습니다.
gcc.exe File.cpp -masm=intel -mconsole -o File.exe
결과적으로 * .exe 파일이 생성되며 제 경험에 만족합니다.
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.
그게 다야.
$ gcc -S -masm=intel -mconsole a.c -o a.out gcc: error: unrecognized command line option ‘-mconsole’
-o a.out
하면 .s 파일을 얻지 못합니다.
echo "packsswb mm0,[bp+si-0x54]" | llvm-mc-3.2 -x86-asm-syntax=intel
givespacksswb -84(%bp,%si), %mm0