ההבדל בין מהדר למרכיב

מְחַבֵּר: Laura McKinney
תאריך הבריאה: 1 אַפּרִיל 2021
תאריך עדכון: 11 מאי 2024
Anonim
COMPILER| INTERPRETER |Difference between Interpreter and Compiler| Interpreter vs Compiler Animated
וִידֵאוֹ: COMPILER| INTERPRETER |Difference between Interpreter and Compiler| Interpreter vs Compiler Animated

תוֹכֶן


המהדר והמרכיב ממלא תפקיד חשוב בביצוע תוכנית. כמה מהדרים מהווים באופן ישיר את קוד ההפעלה במקום קוד ההרכבה. המהדר לוקח את קוד המקור המעובד ומתרגם אותו לקוד ההרכבה. המאסף לוקח את קוד ההרכבה מהמהדר ומתרגם אותו לקוד המכונה הניתן להעברה. במאמר זה דנתי בהבדלים בין המהדר למכלול בעזרת תרשים השוואה המוצג להלן, רק תסתכל.

  1. טבלת השוואה
  2. הגדרה
  3. הבדלים עיקריים
  4. סיכום

טבלת השוואה

בסיס להשוואהמהדר מרכיב
בסיסימייצר את קוד שפת ההרכבה או ישירות את קוד ההפעלה.מייצר את קוד המכונה הניתן להעתקה.
קלטקוד מקור מעובד מראש.קוד שפת הרכבה.
שלבים / מעבריםשלבי ההרכבה הם מנתח לקסיקלי, מנתח תחביר, מנתח סמנטי, יצירת קוד ביניים, אופטימיזציית קוד, יצירת קוד.הרכיב מבצע שני מעברים על הקלט הנתון.
תפוקהקוד ההרכבה שנוצר על ידי המהדר הוא גרסה ממנומונית של קוד המכונה.קוד המכונה הניתן להעברה שנוצר על ידי מכלל מיוצג על ידי קוד בינארי.


הגדרת המהדר

ה מהדר היא תוכנית מחשב שקוראת את התוכנית הכתובה בשפת מקור, מתרגמת אותה לשווה ערך שפת אסמבלי ומעביר את קוד שפת ההרכבה ל- מרכיב. בעוד התרגום של קוד המקור לקוד ההרכבה המהדר מדווח גם על שגיאה בקוד המקור למשתמש שלו.

מהדרים מסווגים גם כ מעבר בודד, ריבוי מעבר, עומס והעבר, ניפוי באגים ואופטימיזציה. הסיווג נעשה על בסיס איזו פונקציה מבצע המהדר ואיך הוא נבנה. למרות המורכבות הללו המשימה הבסיסית של המהדר נותרת בעינה.

הקומפילציה מבוצעת בשני חלקים, חלק ניתוח ו חלק סינתזה. ה חלק ניתוח מפרק את קוד המקור לחלקים המרכיבים ויוצר את הייצוג הביניים של קוד המקור. ה חלק סינתזה יוצר את קוד היעד מייצוג הביניים.

הידור מתבצע בשלבים הבאים:

מנתח לקסיקאלי, מנתח תחביר, מנתח סמנטי, מחולל קוד ביניים, מיטוב קוד, מחולל קוד, טבלת סמלים ומטפל שגיאות.


  • ה מנתח לקסיקלי קורא את התווים של קוד המקור ומקבץ אותם לתוכנית זרמי אסימונים. כל אסימון מייצג את הרצף ההגיוני של דמויות כמו מילת מפתח, מזהים, מפעילים. רצף הדמות היוצר אסימון נקרא לקסמה.
  • ה מנתח תחביר מנתח את האסימון המתקבל ממנתח לקסיקלי וקובץ אסימונים ל מבנה היררכי.
  • ה מנתח סמנטי בודק את קוד המקור עבור כל אחד מהם שגיאה סמנטית.
  • מחולל קוד ביניים מייצר את ייצוג ביניים של קוד המקור
  • ה אופטימיזציית הקוד מייעל את קוד הביניים לקוד מהיר יותר של מכונות הפעלה.
  • ה מחולל קוד סוף סוף מייצר את קוד היעד שהוא קוד מכונה להעברה או קוד הרכבה.
  • ה שולחן סמל הוא מבנה נתונים המכיל את הרשומה עבור כל מזהה בקוד המקור.
  • מטפל בשגיאות מזהה את השגיאה בכל שלב ומטפל בשגיאות אלה.

הגדרת אסמבלר

כמה מהדרים מהווים את משימת הרכיב ומייצרים ישירות קוד מכונה הניתן להעברה במקום קוד הרכבה, אשר מועבר ישירות לקישור / מטעין. ה מרכיב לוקח כקלט את קוד ההרכבה שנוצר על ידי המהדר ומתרגם אותו ל קוד מכונה להעברה.

נראה כיצד קוד המכונה שונה מקוד ההרכבה. קוד הרכבה האם ה ממנומוני גרסת קוד המכונה. המשמעות היא שקוד ההרכבה משתמש בשמות לייצוג פעולות והוא אפילו נותן שמות לכתובות הזיכרון. מצד שני, קוד המכונה שימושים קודים בינאריים לייצוג פעולות וכתובות זיכרון.

אפילו צורת הרכיב הפשוטה ביותר מבצעת שני מעברים מעל הקלט. ה מעבר ראשון מגלה את כל מזהים בקוד ההרכבה המציין את מיקום האחסון ולאחסן אותם ב- שולחן סמל (מלבד טבלת הסמלים של המהדרים). ה מוקצה מיקום אחסון למזהה שנתקל במעבר הראשון.

בתוך ה מעבר שני, הקלט נסרק שוב והפעם קוד פעולה הם תורגם לתוך רצף של ביטים המייצג פעולה זו בקוד המכונה. גם המעבר השני מתרגם מזהים לתוך ה כתובות המוגדר בטבלת הסמלים. כך המעבר השני מייצר את קוד מכונה להעברה.

  1. ההבדל העיקרי בין המהדר למכלול הוא ש- מהדר מייצר קוד הרכבה וכמה מהדרים יכולים גם ליצור ישירות קוד הפעלה ואילו, מרכיב מייצר קוד מכונה להעברה.
  2. המהדר לוקח כקלט את קוד מעובד מראש שנוצר על ידי מעבד מקדים. מצד שני המאסף לוקח קוד הרכבה כקלט.
  3. הידור מתרחש בשני שלבים שהם שלב ניתוח ו שלב סינתזה. בשלב הניתוח, הקלט עובר מנתח לקסיקלי, מנתח תחביר, מנתח סמנטי ואילו ניתוח הסינתזה מתרחש באמצעות מחולל קוד ביניים, מיטוב קוד, מחולל קוד. מצד שני, הרכיב מעביר את הקלט שני שלבים. השלב הראשון מגלה את המזהים ומקצה הכתובות אליהם בשלב השני קוד ההרכבה מתורגם לקוד בינארי.
  4. קוד ההרכבה שנוצר על ידי המהדר הוא: גרסה ממנונית של קוד מכונה. עם זאת, קוד המכונה הניתן להעתקה שנוצר על ידי הרכיב הוא: קוד העברת בינארי.

סיכום:

יתכן כי לא צריך להרכיב את המרכיב שכן כמה מהדרים מהווים באופן ישיר קוד הפעלה. אם משתמשים במרכיב זה דורש מקישור לקשר בין כל הספריות המובנות לפונקציות הספריה המשמשות בקוד המקור.