تفكيكها في x86_64 على OSX10.6 (ولكن مع بناء جملة _intel_)

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

  •  19-09-2019
  •  | 
  •  

سؤال

أنا أعلم عن otool -tv, ، لكنني أفضل استخدام شركة انتل بناء الجملة بدلا من AT & TS، لا يتبع بسهولة في كتاب وليس يجب أن ننظر إلى الآلاف من %'رمل $'س.

أنا أقدر أيضا أي نصائح إلى حيث قد أجدها gdbملف التكوين.

تحرير: نسيت: أقوم بتشغيل معالج 64 بت، لكنه كان يتساءل عما إذا كان من الممكن تفكيكه أيضا إلى مجموعة 32 بت؟ ليس فقط ذلك، ولكن OSX's gdblist الأمر يعمل بشكل مختلف عن المعيار GNU الإصدار؟

شكرا جزيلا!

(أيضا، إذا كان لديك أي فكرة حيث قد أجد فكاهة صغيرة من C -> MIPS، فهل تكون ممتعا للغاية. ولكن ليس ضروريا!)

هل كانت مفيدة؟

المحلول

للإجابة على سؤالك الثاني، إذا تم تجميع التعليمات البرمجية في ثنائي الدهون مع كل من 64 بت و 32 بت، يمكنك استخدامه otool -arch i386 -tv لتفكيك شريحة 32 بت من الثنائي؛ otool -arch x86_64 -tv سوف تعطيك جزء 64 بت (على الثلوج الثلجية، وهذا هو أيضا السلوك الافتراضي إذا كان لا -arch يتم تمرير العلم).

لاحظ أيضا أنه بينما لا يدعم Otool بناء جملة Intel، GDB (set disassembly-flavor intel) و XCode (تفضيلات -> تصحيح الأخطاء -> الاسلوب التفكيك) القيام به.

نصائح أخرى

(أعرف أن هذا سؤال قديم، لكنني أرغب في تقديم إجابة محدثة للأشخاص الذين يأتون إلى هنا من خلال محركات البحث).

في الإصدارات الحديثة من ماكوس (أعاني من 10.14.5)، objdump الأمر متاح، الذي يعتمد على LLVM وهو ليس واحد من مشروع جنو. يوفر خيار (مخفي) لتفكيك استخدام بناء جملة Intel. علي سبيل المثال، /bin/echo يمكن تفكيكها على النحو التالي:

objdump -disassemble -x86-asm-syntax=intel /bin/echo

مع objdump. يمكنك تفكيك -d -M intel, ، ويبدو أن -m يمكن استخدامها لتحديد الهندسة المعمارية.

بالنسبة إلى GDB، في ملف .gdbinit الخاص بك، أضف:

تعيين نكهة التفكيك إنتل

ثم سيكون بناء الجملة الافتراضي ل GDB.

يمكنك استخدام A2I للترجمة من بناء جملة AT & T إلى Intel: http://membres.lycos.fr/placr/a2i.html.

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