מהי קריאת מערכת?
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 31 מתוך 45.
כתבת הוראות אסמבלי כמו mov ו־lea. ההוראות האלה פועלות ישירות על המעבד. אבל מה אם צריך לעשות משהו שהמעבד לא יכול לעשות בעצמו, כמו להדפיס למסך, לקרוא מהמקלדת או לצאת מתוכנית?
למשימות האלה דרושה לך מערכת ההפעלה (Linux, בקורס הזה).
מהי קריאת מערכת?
syscall (קריאת מערכת) היא בקשה מהתוכנית שלך למערכת ההפעלה. כך מבקשים ממערכת ההפעלה לעשות משהו בשבילך.
למה צריך קריאות מערכת:
| משימה | האם המעבד יכול לבצע אותה לבדו? | נדרשת קריאת מערכת? |
|---|---|---|
| חיבור שני מספרים | כן | לא |
| העברת נתונים בין אוגרים | כן | לא |
| הדפסת טקסט על המסך | לא | כן |
| קריאת קלט מהמקלדת | לא | כן |
| יציאה מתוכנית | לא | כן |
| פתיחת קובץ | לא | כן |
איך syscall פועלת:
- שמים מספר syscall ב-
rax(אומר למערכת ההפעלה מה רוצים) - שמים ארגומנטים באוגרים אחרים (
rdi,rsi,rdxוכו') - מבצעים את הפקודה
syscall
- המעבד קופץ לליבת מערכת ההפעלה
- מערכת ההפעלה מבצעת את הבקשה
- מערכת ההפעלה מחזירה את השליטה לתוכנית שלך
דימוי:
חשבו על קריאת מערכת כאילו אתם מתקשרים למשרד ממשלתי:
| שלב | דימוי | באסמבלי |
|---|---|---|
| 1 | החליטו איזה שירות אתם צריכים | בחרו מספר קריאת מערכת (שימו אותו ב־rax) |
| 2 | מלאו את הטפסים | שימו את הארגומנטים באוגרים |
| 3 | הגישו את הבקשה | בצעו syscall |
| 4 | הממשלה מטפלת בה | ליבת מערכת ההפעלה מבצעת את העבודה |
| 5 | קבלו את התוצאה בחזרה | התוכנית ממשיכה |
קריאות המערכת שתלמד בקורס הזה:
| קריאת מערכת | מספר | מה היא עושה | פרק |
|---|---|---|---|
exit | 60 | מסיימת את התוכנית | פרק 4 |
write | 1 | מדפיסה טקסט למסך | פרק 5 |
קריאת המערכת החשובה ביותר לעת עתה: <strong>exit</strong>
בלי exit, התוכנית שלך הייתה ממשיכה לפעול לנצח או קורסת. כל תוכנית שתכתוב חייבת להסתיים בקריאת מערכת מסוג exit.
mov rax, 60 ; מספר ה-syscall ליציאה
mov rdi, 0 ; קוד יציאה (0 = הצלחה)
syscall ; בקשה ממערכת ההפעלה לצאתנסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
תרגלו בעצמכם: Assembly אונליין