• 0

ما معنى testl eax, eax في الأسمبلي ؟

أحاول فهم بعض الشيفرات البرمجية المكتوبة بلغة الأسمبلي، فأنا لم أفهم معنى  testl eax, eax في الشيفرة البرمجية التالية:

000319df  8b4508                  movl        0x08(%ebp),%eax  
000319e2  8b4004                  movl        0x04(%eax),%eax  
000319e5  85c0                testl           %eax,%eax  
000319e7  7407                je          0x000319f0

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

سأحاول تفسير الأمر أكثر ما يمكن. معنى test هو أنه سيقوم بتطبيق العملية الحسابية AND على المعاملين ومن ثم سوف يتأكد من الناتج إذا كان صفرا، لذلك معنى هذه الشفرة أنها ستقوم باختبار ما إذا كانت EAX تساوي صفر أو لا ومن ثم سوف تتم عملية القفز باستخدام je إذا كانت صفر.
بالمناسبة يمكنك جعل الشيفرة أفضل وأكثر قابلية للقراءة عن طريق استبدال هذا السطر بالسطر التالي:

cmp eax,0

هذا السطر سيقوم بنفس الوظيفة السطر السابق لكنه سيتطلب المزيد من مساحة البايتات.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن