שאלה:

  • פותח הנושא sy15
  • פורסם בתאריך

The_Mighty_Perr

New member
המ...

בס"ד נכון. לגבי ASM. אבל אני זוכר שקראתי באיזה ספר ששפות כמו BASIC/PASCAL נחשבות שפות עיליות. אבל C/CPP לא נחשבת עילית אלא שפת ביניים בין שפה עילית לשפת סף. אז אפ נלך לפי ההגדרה הזו, לא מדובר בשפות עליות אלא בכל שפה שאינה שפת סף. בברכה...
 

IdanR

New member
זה תלוי איך אתה רואה את זה...

יש אנשים שיגידו ש ++C זאת שפה עילית.
 

Zack DA

New member
תשובה:

קובץ מקומפל (COMPILED FILE) הוא כינוי לקובץ המכיל קוד בשפה כלשהי (קובץ C, קובץ פסקל וכו´) שעבר בדיקת קומפילציה (דהיינו מהדר של אותה שפה שעובר על הקוד, ומדווח על שגיאות) בהצלחה (כלומר לא נמצאו שגיאות). קימפול של קובץ, בהתאם למהדר, יוצר קובץ חדש בשפת מכונה או שפת סף על מנת להריץ את התוכנית על המחשב.
 

IdanR

New member
לא מדויק...

למעשה, קומפילציה של קובץ, הופכת אותו לקובץ בשפת מכונה. בדרך כלל עם סיומת obj לאחר מכן יש להפעיל פעולת קישור שהופכת את כל קבצי ה obj לקובץ הפעלה... בדרך כלל עם סיומת exe. בתוכנות כמו ויז´ואל סי, כל זה מתבצע אוטומטית. יש אם כן שלושה שלבים עיקריים בהפיכה של קובץ בשפת תכנות, לקובץ הפעלה: iterpretion (בדיקת קוד) compilation Linking
 

Zack DA

New member
תחשוב עוד פעם:

שני השלבים הראשונים הם מוכלים בתוך ה- COMPILATION. ברמה העקרונית קומפיילר אמור להעביר את בקוד לשפת סף (חלק קדמי של מהדר) וחלק לא עקרוני של המהדר יכול לבצע את ה- LINKING. ובכל אופן כשאומרים "קובץ מקומפל" הכוונה מאוד ברורה.
 

ronihp

New member
תחשוב אסמבלי

אתה מבצע הידור בשני שלבים. masm ואחר כך link.
 

IdanR

New member
אוקיי...

אבל הרעיון הוא שפעולת קומפילציה הופכת קובץ בשפה עילית לקובץ בשפת מחשב.
 

IdanR

New member
כן...

הרי באסמבלר שם הפעולה הוא: Assemble ולא Compile
 

The_Mighty_Perr

New member
לא מדוייק...

בס"ד 1. תוכנות כמו VC לא מבצעות כלום. VCPP היא סביבית עבודה, ומהדר והמקשר(linker בעברית...
) הם תוכנות שורת פקודה בנפרד מסביבת העבודה. 2. ישנם 2 שלבים בלבד. הידור וקישור. אין שום פירוש(אינטרפריטציה בעברית). בברכה...
 

ihovav

New member
בקומפיילרים מתקדמים יש גם שלב של

פרה-קומפילציה - שבו הקומפיילר מייעל את הקוד (קיים ב VC למשל)
 

Zack DA

New member
הסבר לכולם:

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

gilad_no

New member
מסכים איתך,

הכוונה בדר"כ כלל זה לסה"כ הפעולות שנעשות על קוד מקור. זה שיוצרים ספרייה דינמית ואי אפשר להריץ אותה עדיין (כי לא קישרנו אותה), זה אומר שהיא לא מקומפלת??? הכוונה בקומפילצייה זה תהליך הפיכת קוד המקור לשפת מכונה. זה שהתהליך נעשה ב2 שלבים עיקריים (הידור וקישור), לא רלוונטי בכלל. כמו שצחי אמר, גם תהליך הניתוח הלקסיקלי מוכלל במילת הקסם "קומפילציה" ולא מתייחסים אליו כאל שלב בפני עצמו.
 
למעלה