كيف تستخدم دول مجلس التعاون الخليجي لتوليد رمز التجميع في جملة إنتل؟
سؤال
والخيار gcc -S
سوف تولد رمز التجميع في AT & T لغوي، هل هناك طريقة لإنشاء ملفات في جملة إنتل؟ أو هل هناك طريقة لتحويل بين الاثنين؟
المحلول
هل حاولت هذه؟
gcc -S -masm=intel test.c
وغير مختبر، لكني وجدته في هذا المنتدى حيث ادعى شخص ما عملت لهم.
ولقد حاولت هذه على لجنة الهدنة العسكرية وفشلت، لذلك كنت قد بحثت في الصفحة رجل بلدي:
-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
نصائح أخرى
و
gcc -S -masm=intel test.c
هل تعمل معي. ولكن أستطيع أن أقول بطريقة أخرى، على الرغم من أن هذا له علاقة مع تشغيل دول مجلس التعاون الخليجي لا شيء. ترجمة قابل للتنفيذ أو ملف التعليمات البرمجية الكائن ومن ثم تفكيك رمز الكائن في جملة ASM إنتل مع objdump على النحو التالي:
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.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.
وهذا كل شيء.