שיעור 8: שפת מכונה ואסמבלי
ראינו שהמעבד מבצע פקודות מתוך מחזור ה-fetch-decode-execute, אבל מה בדיוק יושב באותן פקודות? בתחתית הכול נמצאת שפת מכונה (Machine Code) — רצף של 0 ו-1 שכל פקודה בו מורכבת מאופקוד (Opcode, איזו פעולה לבצע) ואופרנדים (Operands, על מה לבצע אותה). בני אדם לא קוראים בינארי בנוחות, ולכן נולדה שפת אסמבלי (A
שפת מכונה היא פקודות של 0 ו-1 שהמעבד מבצע. אסמבלי הוא אותן פקודות בדיוק, אבל כתובות בשמות קצרים שאנשים יכולים לקרוא — כמו 'ADD' במקום שורת אפסים ואחדות.
- שפת מכונה
- פקודות בינאריות (רצף של 0 ו-1) שהמעבד מבצע ישירות, ללא תרגום נוסף.
- אופקוד
- החלק בפקודה שקובע איזו פעולה לבצע (חיבור, העתקה, קפיצה). שמו קיצור של Operation Code.
- אופרנד
- החלק בפקודה שמציין על מה לפעול: רגיסטר, ערך מספרי או כתובת בזיכרון.
- קבוצת פקודות
- החוזה שמגדיר את כל הפקודות שמעבד יודע לבצע ואת אופן הקידוד שלהן; דוגמאות אמיתיות הן x86 ו-ARM.
- שפת אסמבלי
- ייצוג קריא לאדם של שפת מכונה, אחד-לאחד: כל שורת אסמבלי מתאימה לפקודת מכונה אחת.
- מנמוניק
- השם הקצר של פעולה באסמבלי, כמו MOV, ADD או JMP, שמחליף את האופקוד הבינארי.
- רגיסטר
- תא אחסון זעיר ומהיר מאוד בתוך המעבד עצמו, שבו מוחזקים ערכים שעליהם פועלות הפקודות.
- קידוד פקודה
- התבנית הבינארית המדויקת שאליה הופך מנמוניק עם האופרנדים שלו כדי שהמעבד יוכל לבצעו.
- RISC מול CISC
- שתי גישות לתכנון ISA: RISC עם פקודות מעטות ופשוטות (כמו ARM), CISC עם פקודות רבות ומורכבות (כמו x86).
- קפיצה והסתעפות
- פקודה שמשנה איזו פקודה תבוצע בהמשך — לעיתים בתנאי — וכך מממשת לולאות ותנאים בשפת מכונה.