الدرس 8: لغة الآلة والأسمبلي
رأينا أن وحدة المعالجة المركزية (CPU) تنفّذ التعليمات عبر دورة fetch-decode-execute، لكن ما الذي يوجد بالضبط داخل تلك التعليمات؟ في القاع تماماً توجد لغة الآلة (machine code) — سيل من الأصفار والآحاد حيث تتكوّن كل تعليمة من رمز عملية (opcode، أي عملية تُنفَّذ) ومعاملات (operands، على ماذا تُنفَّذ).
لغة الآلة هي تعليمات من أصفار وآحاد تنفّذها وحدة المعالجة المركزية (CPU). والأسمبلي هو التعليمات نفسها تماماً، لكن مكتوبة بأسماء قصيرة يستطيع الناس قراءتها — مثل 'ADD' بدلاً من صفٍّ من الأصفار والآحاد.
- لغة الآلة
- تعليمات ثنائية (متتاليات من الأصفار والآحاد) تنفّذها وحدة المعالجة المركزية مباشرةً، دون أي ترجمة إضافية.
- رمز العملية (Opcode)
- الجزء من التعليمة الذي يحدّد أي عملية تُنفَّذ (جمع، نسخ، قفز). والاسم اختصار لـ Operation Code.
- معامل (Operand)
- الجزء من التعليمة الذي يحدّد ما الذي تعمل عليه: مُسجِّل، أو قيمة عددية، أو عنوان في الذاكرة.
- معمارية مجموعة التعليمات (ISA)
- العقد الذي يعرّف كل تعليمة تستطيع وحدة المعالجة المركزية تنفيذها وكيفية ترميز كل منها؛ ومن أمثلته الواقعية x86 و ARM.
- لغة الأسمبلي
- تمثيل قابل للقراءة من قِبَل الإنسان، واحد-لواحد، للغة الآلة: كل سطر أسمبلي يقابل تعليمة آلة واحدة.
- الاسم الرمزي (Mnemonic)
- الاسم القصير لعملية في الأسمبلي، مثل MOV أو ADD أو JMP، الذي يحلّ محلّ رمز العملية الثنائي.
- مُسجِّل (Register)
- خلية تخزين صغيرة جداً وسريعة للغاية داخل وحدة المعالجة المركزية نفسها، تحتفظ بالقيم التي تعمل عليها التعليمات.
- ترميز التعليمة
- النمط الثنائي الدقيق الذي يتحوّل إليه الاسم الرمزي مع معاملاته كي تستطيع وحدة المعالجة المركزية تنفيذه.
- RISC مقابل CISC
- نهجان لتصميم الـ ISA: RISC بتعليمات قليلة وبسيطة (مثل ARM)، و CISC بتعليمات كثيرة ومعقّدة (مثل x86).
- القفز / التفرّع
- تعليمة تغيّر أي تعليمة تُنفَّذ تالياً — أحياناً بشرط — فتحقّق الحلقات والشروط في لغة الآلة.