gcc -S
विकल्प एटी एंड टी वाक्य रचना में विधानसभा कोड उत्पन्न होगा, वहाँ एक रास्ता इंटेल वाक्य रचना में फ़ाइलों को उत्पन्न करने के लिए है? या फिर दोनों के बीच धर्मांतरण का कोई तरीका है?
gcc -S
विकल्प एटी एंड टी वाक्य रचना में विधानसभा कोड उत्पन्न होगा, वहाँ एक रास्ता इंटेल वाक्य रचना में फ़ाइलों को उत्पन्न करने के लिए है? या फिर दोनों के बीच धर्मांतरण का कोई तरीका है?
जवाबों:
क्या आपने यह कोशिश की है?
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.
यह आपके प्लेटफॉर्म पर काम कर सकता है।
मैक OSX के लिए:
clang++ -S -mllvm --x86-asm-syntax=intel test.cpp
prefix
/ noprefix
(निश्चित नहीं है कि यह मायने रखता है कि क्या क्लैंग विधानसभा का उपभोग करता है)।
The
gcc -S -masm=intel test.c
मेरे साथ काम करता है लेकिन मैं एक और तरीका बता सकता हूं, हालांकि इसका रनिंग जीसीसी से कोई लेना-देना नहीं है। निष्पादन योग्य या ऑब्जेक्ट कोड फ़ाइल को संकलित करें और फिर नीचे दिए गए अनुसार 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
देता हैpacksswb -84(%bp,%si), %mm0