HardWord نشر 3 أكتوبر 2015 أرسل تقرير نشر 3 أكتوبر 2015 أحاول فهم بعض الشيفرات البرمجية المكتوبة بلغة الأسمبلي، فأنا لم أفهم معنى 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 هشام رزق الله نشر 3 أكتوبر 2015 أرسل تقرير نشر 3 أكتوبر 2015 سأحاول تفسير الأمر أكثر ما يمكن. معنى test هو أنه سيقوم بتطبيق العملية الحسابية AND على المعاملين ومن ثم سوف يتأكد من الناتج إذا كان صفرا، لذلك معنى هذه الشفرة أنها ستقوم باختبار ما إذا كانت EAX تساوي صفر أو لا ومن ثم سوف تتم عملية القفز باستخدام je إذا كانت صفر.بالمناسبة يمكنك جعل الشيفرة أفضل وأكثر قابلية للقراءة عن طريق استبدال هذا السطر بالسطر التالي:cmp eax,0 هذا السطر سيقوم بنفس الوظيفة السطر السابق لكنه سيتطلب المزيد من مساحة البايتات. اقتباس
السؤال
HardWord
أحاول فهم بعض الشيفرات البرمجية المكتوبة بلغة الأسمبلي، فأنا لم أفهم معنى testl eax, eax في الشيفرة البرمجية التالية:
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.