سؤال

مما قرأت عنه mov, ، فإنه ينسخ الوسيطة الثانية إلى الوسيطة الأولى.ثم ماذا يفعل هذا؟

movl    8(%ebp),    %edx

يقوم بنسخ كل ما هو موجود في edx إلى المعلمة الأولى للوظيفة (نظرًا لإزاحة +8 من ebp هي المعلمة)؟

أشعر أن ما يعنيه هذا حقًا هو نقل المعلمة الأولى إلى ملف edx التسجيل، ولكن قرأت على ويكيبيديا أن الأمر هو العكس؟

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

المحلول

movl 8(%ebp), %edx

موجود في "بناء جملة AT&T" ؛في هذا النحو، يأتي المصدر أولاً والوجهة ثانيًا.إذن نعم اعتقادك صحيح.تستخدم معظم الوثائق "Intel Syntax"، الذي له ترتيب عكسي.يعد هذا مصدرًا لارتباك كبير للأشخاص الجدد في تجميع x86.

في Intel Syntax، سيتم كتابة التعليمات الخاصة بك:

mov edx, [ebp + 8]

لاحظ غياب % قبل أسماء السجل، واستخدام الأقواس المربعة بدلاً من الأقواس للعنوان، وعدم وجود l لاحقة على التعليمات.هذه هبات ميتة لمعرفة شكل التجميع الذي تنظر إليه.

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