שיעור 9: ממקור לקובץ הרצה — קומפילציה, אסמבלר, קישור וטעינה
בשיעור הקודם ראינו שקוד עילי חייב בסופו של דבר להפוך לשפת מכונה. אבל מי עושה את התרגום, ואיך כמה קבצים שכתבנו הופכים לתוכנית אחת שאפשר להריץ? התשובה היא שרשרת כלים (Toolchain): מהדר (Compiler) שמתרגם את המקור לאסמבלי, אסמבלר (Assembler) שהופך אסמבלי לקוד מכונה בקובץ אובייקט, מקשר (Linker) שמאחד כמה
כדי שקוד שכתבת יוכל לרוץ הוא עובר כמה תחנות: קודם תוכנה מתרגמת אותו לשפת מכונה, אחר כך כמה חלקים מחוברים יחד לקובץ אחד, ולבסוף הקובץ נטען לזיכרון ורץ. כל תחנה היא כלי נפרד עם תפקיד אחד.
- מהדר
- תוכנה שמתרגמת קוד מקור שנכתב בשפה עילית לקוד בשפה נמוכה יותר, בדרך כלל אסמבלי או קוד מכונה.
- אסמבלר
- תוכנה שמתרגמת קוד אסמבלי לקוד מכונה ויוצרת קובץ אובייקט.
- קובץ אובייקט
- תוצר האסמבלר עבור קובץ מקור בודד: קוד מכונה יחד עם טבלת סמלים, עוד לפני הקישור.
- מקשר
- תוכנה שמאחדת כמה קובצי אובייקט וספריות לקובץ הרצה אחד ופותרת הפניות חוצות-קבצים.
- טוען
- חלק ממערכת ההפעלה שמעתיק קובץ הרצה מהדיסק לזיכרון ומפעיל אותו כתהליך.
- קובץ הרצה
- קובץ מוכן להרצה המכיל קוד מכונה מקושר, תוצר סופי של שרשרת הבנייה.
- מפרש
- תוכנה שמבצעת קוד שורה-שורה בזמן ריצה, במקום לתרגם אותו מראש לקובץ הרצה.
- קוד ביניים
- צורת ביניים שאינה קוד מקור ואינה קוד מכונה של המעבד, שמורצת על ידי מפרש או מכונה וירטואלית.
- קישור סטטי ודינמי
- סטטי מטמיע את הספרייה לתוך קובץ ההרצה; דינמי טוען אותה בנפרד בזמן הריצה ומשתף בין תוכניות.
- סמל
- שם של פונקציה או משתנה בטבלת הסמלים, שהמקשר משתמש בו כדי לחבר קריאה להגדרה.