"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > هل تعليمات \"القفل\" الموجودة في تجميعة x86 تعطل الحافلة إلى أجل غير مسمى؟

هل تعليمات \"القفل\" الموجودة في تجميعة x86 تعطل الحافلة إلى أجل غير مسمى؟

تم النشر بتاريخ 2024-11-08
تصفح:748

 Does the \

فهم تعليمات "القفل" في تجميع x86

تعليمات "القفل" في تجميع x86 هي بادئة تفرض الملكية الحصرية للحافلة للتعليمات اللاحقة. وهذا يضمن أن وحدة المعالجة المركزية لديها سيطرة كاملة على سطر ذاكرة التخزين المؤقت لمدة تلك التعليمات.

إلغاء تنشيط قفل الناقل

على عكس الفهم الشائع، فإن بادئة "القفل" لا تتسبب في قفل وحدة المعالجة المركزية. الحافلة إلى أجل غير مسمى. يتم تحرير القفل بعد تنفيذ التعليمات اللاحقة. يسمح هذا لوحدة المعالجة المركزية بالحفاظ على الأداء الأمثل عن طريق قفل الناقل فقط عند الضرورة القصوى.

تنفيذ الإضافة باستخدام "القفل"

ينفذ مقتطف الكود الذي قدمته زيادة ذرية لكلمة طويلة في موقع الذاكرة المحدد بالقيمة الموجودة في سجل ecx:

  1. movl 4(%esp), �x: نسخ عنوان المتغير المراد زيادته في سجل ecx.
  2. incl ( �x): زيادة الكلمة الطويلة تلقائيًا في العنوان المخزن في سجل ecx.
  3. mov $0, �x: يضبط سجل eax على 0.
  4. setne %al: يضبط قيمة السجل al على 1 إذا كانت القيمة الجديدة للمتغير لا تساوي 0 (مما يدل على أن عملية الزيادة كانت ناجحة).

النتيجة هي زيادة المتغير ذريًا بمقدار 1، ويتم تعيين السجل eax على 0 إذا كانت القيمة الجديدة هي 0، أو 1 بخلاف ذلك. لاحظ أن هذه العملية زيادة وليست إضافة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3