Byte Ordering (Endianness)
كيف نخزن الرقم السداسي عشر 0x12345678 في الذاكرة؟
Big Endian (الأكثر أهمية أولاً)
MSB at Lowest Address (مثل قراءتنا الطبيعية)
Little Endian (الأقل أهمية أولاً)
LSB at Lowest Address (معكوسة)
Architecture Types
Stack Architecture
العمليات تتم ضمنياً في الـ Stack.
- PUSH X
- PUSH Y
- ADD (Implicit pop X, Y)
- POP Z
Postfix: XY+
Accumulator (AC)
أحد المعاملات دائماً في الـ AC.
- LOAD X
- ADD Y (AC = AC + Y)
- STORE Z
MARIE Example
GPR (Register)
الأكثر شيوعاً (Intel/MIPS).
- LOAD R1, X
- LOAD R2, Y
- ADD R3, R1, R2
Flexible & Fast
Addressing Modes (أنماط العنونة)
مثال الاختبار الشهير: التعليمة هي LOAD 800. ماذا سيتم تحميله في الـ AC؟
| Mode | Logic (How it works) | Value Loaded |
|---|---|---|
| Immediate | Operand IS the data. | 800 |
| Direct | Operand is the address (Mem[800]). | 900 |
| Indirect | Pointer: Mem[Mem[800]] -> Mem[900]. | 1000 |
| Indexed | Mem[Operand + R1] -> Mem[800+800]. | 700 |
Instruction Pipelining
تقسيم تنفيذ التعليمة إلى مراحل لزيادة الـ Throughput.
لاحظ كيف تعمل التعليمات بشكل متوازي (Parallel) في دورات مختلفة.
Expanding Opcodes
لديك تعليمة 16-بت. العنوان (Address) يأخذ 4 بتات.
إذا كان لديك 15 تعليمة من نوع 3-Address، كم يتبقى لتعليمات 2-Address؟
Used for 3-Addr = 15
Left = 1 pattern (1111)
This 1 pattern opens up 4 bits of the next operand
Available for 2-Addr = $1 \times 2^4 = 16$ instructions
Infix to Postfix
حول المعادلة: $(2+3) - 6/3$
1. الأقواس أولاً: $(23+) - 6/3$
2. القسمة ثانياً: $(23+) - (63/)$
3. الطرح أخيراً: $23+63/-$