كيف تعمل التعليمات
جزء من قسم الأساسيات في رحلة Assembly على Coddy — الدرس 4 من 45.
أنت تعلم أن وحدة المعالجة المركزية (CPU) تنفذ التعليمات واحدة تلو الأخرى. ولكن كيف تعرف وحدة المعالجة المركزية أي تعليمات يجب تشغيلها بعد ذلك؟ أين يتم تخزين التعليمات؟ وكيف يبدو شكل التعليمة في الواقع؟
التعليمات هي أرقام.
هذه حقيقة أساسية حول أجهزة الكمبيوتر. كل شيء عبارة عن رقم. البيانات التي تعمل معها (مثل الرقم 42) هي رقم. العنوان الذي توجد فيه البيانات (مثل 1000) هو رقم. والتعليمات نفسها (مثل mov و add و cmp) هي أيضاً أرقام.
عندما تكتب كود التجميع (assembly) مثل mov rax, 5، يقوم المجمّع (assembler) بتحويل هذا النص المقروء بشرياً إلى رقم يفهمه المعالج (CPU). يُسمى هذا الرقم رمز التعليمات (instruction code).
أين تُخزن التعليمات؟
تُخزن التعليمات في الذاكرة، تماماً مثل البيانات. لا يوجد مكان خاص للتعليمات. الذاكرة تحتوي على كليهما:
- البيانات (الأرقام، الأحرف، المصفوفات)
- التعليمات (البرنامج نفسه)
وحدة المعالجة المركزية (CPU) لا تعرف الفرق. فهي ببساطة تقرأ كل ما هو موجود في عنوان الذاكرة الذي يشير إليه عداد البرنامج (Program Counter). لقد تعلمت عن الـ PC باختصار في الدرس 0.1. الآن حان الوقت لفهم كيفية عمله بالضبط.
يُعد عداد البرنامج Program Counter (والذي يُسمى أيضاً مؤشر التعليمات Instruction Pointer) سجلاً خاصاً داخل وحدة المعالجة المركزية CPU. وتتمثل مهمته الوحيدة في الاحتفاظ بعنوان الذاكرة للتعليمات التالية المطلوب تنفيذها.
دورة الجلب والتنفيذ:
تكرر وحدة المعالجة المركزية (CPU) هذه الخطوات الثلاث باستمرار:
| الخطوة | ماذا يحدث |
|---|---|
| 1. الجلب (FETCH) | قراءة التعليمة الموجودة في العنوان في PC |
| 2. التنفيذ (EXECUTE) | تنفيذ تلك التعليمة |
| 3. التقدم (ADVANCE) | نقل PC إلى التعليمة التالية |
مثال بسيط:
إذا كان PC = 1000، فإن وحدة المعالجة المركزية (CPU):
- تجلب التعليمة الموجودة في العنوان 1000
- تنفذها
- تنقل PC إلى العنوان التالي (1000 + حجم التعليمة)
ثم يتكرر مع قيمة PC الجديدة.
كيف يبدو شكل التعليمة:
تتكون كل تعليمة من جزأين:
| الجزء | ماذا يفعل | مثال |
|---|---|---|
| رمز العملية (Opcode) | ما يجب فعله | mov, add, cmp |
| المعاملات (Operands) | ما يتم إجراء العملية عليه | rax, 5, [result] |
بعض التعليمات تحتوي على معامل واحد (مثل inc rax لإضافة 1). وبعضها يحتوي على معاملين (مثل mov rax, 5). وبعضها يحتوي على ثلاثة (مثل add rax, rbx, rcx في بعض البنيات).
جرّب بنفسك
لا يتضمّن هذا الدرس تحدّيًا برمجيًا.
يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2أنظمة العد
لماذا النظام الثنائي؟الأعداد الثنائيةمن العشري إلى الثنائيلماذا النظام الست عشري؟من الست عشري إلى العشريمن العشري إلى الست عشريASCII والست عشري5استدعاء النظام Exit Syscall
ما هو الـ Syscall؟استدعاء النظام Exit Syscall (60)رموز الخروج (Exit Codes)ملخص: الخروج النظيف (Clean Exit)