كيف يمكنني إعداد `ss:` أو `es:` `باستخدام بناء جملة AT&T
سؤال
كيف يمكنني إعداد أ SS:
أو ES:
باستخدام بناء جملة AT&T دون إضافة في أ .byte 0x36
أو .byte 0x26
?
بمعنى آخر. كيف يمكنني التحويل mov dword ptr ss:[esp+0x10], offset foo
من بناء جملة Intel إلى AT&T دون استخدام:
.byte 0x36
movl $foo, 0x10(%esp)
لقد حاولت movl $foo, %ss:0x10(%esp)
الذي يتجمع دون تحذيرات ، ولكن ، النظر من خلال الثنائي ، لا يزال لا يضيف في SS:
المحلول
IIRC ، و SS:
البادئة غير مطلوبة عند استخدامها مع ESP
و EBP
السجلات ، لأنه بالنسبة لهذه ، هو بالفعل الافتراضي.
قد يكون هذا هو السبب وراء حذفه المجمع ببساطة للحفاظ على المساحة ؛ لذلك الحاجة إلى تنبعث يدويًا SS:
بادئة ك 0x36
بايت ، لأن المجمع لن يعدل بايتات الخام.
لا تنتمي إلى StackOverflow