كيف تستخدم دول مجلس التعاون الخليجي لتوليد رمز التجميع في جملة إنتل؟

StackOverflow https://stackoverflow.com/questions/199966

سؤال

والخيار 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

المصدر: https://stackoverflow.com/a/11957826/950427

نصائح أخرى

و

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.

وهذا كل شيء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top