Menu
CoddyTech

מהי קריאת מערכת?

חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 31 מתוך 45.

כתבת הוראות אסמבלי כמו mov ו־lea. ההוראות האלה רצות ישירות על המעבד. אבל מה אם צריך לעשות משהו שהמעבד לא יכול לעשות בעצמו, כמו להדפיס למסך, לקרוא מהמקלדת או לצאת מתוכנית?

למשימות האלה דרושה לך מערכת ההפעלה (Linux, בקורס הזה).

מהי קריאת מערכת?

קריאת מערכת (syscall) היא בקשה שהתוכנית שלך שולחת למערכת ההפעלה. כך מבקשים ממערכת ההפעלה לעשות משהו עבורך.

למה צריך קריאות מערכת:

משימההאם המעבד יכול לבצע אותה לבדו?האם נדרשת קריאת מערכת?
חיבור שני מספריםכןלא
העברת נתונים בין אוגריםכןלא
הדפסת טקסט על המסךלאכן
קריאת קלט מהמקלדתלאכן
יציאה מתוכניתלאכן
פתיחת קובץלאכן

איך קריאת מערכת פועלת:

  1. מכניסים מספר קריאת מערכת ל־rax (אומר למערכת ההפעלה מה רוצים)
  2. מכניסים ארגומנטים לאוגרים אחרים (rdi, rsi, rdx וכו׳)
  3. מבצעים את הוראת syscall
  1. המעבד קופץ לליבת מערכת ההפעלה
  2. מערכת ההפעלה מבצעת את הבקשה
  3. מערכת ההפעלה מחזירה את השליטה לתוכנית שלך

הקבלה:

חשבו על קריאת מערכת כמו על פנייה למשרד ממשלתי:

שלבהקבלהב־assembly
1מחליטים איזה שירות צריךבוחרים מספר קריאת מערכת (מכניסים ל־rax)
2ממלאים את הטפסיםמכניסים ארגומנטים לאוגרים
3מגישים את הבקשהמבצעים syscall
4הממשלה מטפלת בבקשהליבת מערכת ההפעלה מבצעת את העבודה
5מקבלים את התוצאה בחזרההתוכנית ממשיכה

קריאות המערכת שתלמדו בקורס הזה:

קריאת מערכתמספרמה היא עושהפרק
exit60מסיימת את התוכניתפרק 4
write1מדפיסה טקסט למסךפרק 5

קריאת המערכת החשובה ביותר לעת עתה: exit

בלי exit, התוכנית שלך הייתה ממשיכה לרוץ לנצח או קורסת. כל תוכנית שתכתוב חייבת להסתיים בקריאת מערכת exit.

mov rax, 60    ; מספר קריאת המערכת ליציאה
mov rdi, 0     ; קוד יציאה (0 = הצלחה)
syscall        ; בקש ממערכת ההפעלה לצאת

נסו בעצמכם

השיעור הזה לא כולל אתגר קוד.

quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה יסודות

תרגלו בעצמכם: Assembly אונליין