تعليمات mov في تجميع x86
سؤال
مما قرأت عنه 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
لاحقة على التعليمات.هذه هبات ميتة لمعرفة شكل التجميع الذي تنظر إليه.
لا تنتمي إلى StackOverflow