קודי יציאה
חלק מהיחידה יסודות במסלול ה-Assembly של Coddy. שיעור 33 מתוך 45.
כשהתוכנית שלך מסתיימת, היא שולחת מספר קטן בחזרה למערכת ההפעלה. המספר הזה נקרא קוד יציאה או סטטוס יציאה.
למה קודי יציאה חשובים:
סקריפטים משתמשים בקודי יציאה כדי לבדוק אם תוכנית הצליחה. לדוגמה, סקריפט גיבוי עשוי להמשיך רק אם הפקודה הקודמת הצליחה.
קודי יציאה עוזרים גם בניפוי שגיאות. אפשר להשתמש בקודי שגיאה שונים עבור בעיות שונות.
אפשר גם לשרשר תוכניות יחד, כך שתוכנית אחת תפעל רק אם הקודמת הצליחה. המעטפת בודקת את קוד היציאה לפני שהיא מריצה את הפקודה הבאה.
הכללים של קודי יציאה:
| קוד יציאה | משמעות |
|---|---|
| 0 | הצלחה: הכול עבד |
| 1-255 | משהו השתבש |
בחירת קודי שגיאה:
אפשר להשתמש בכל מספר מ-1 עד 255. המשמעות של כל מספר נתונה לבחירתך כמתכנת.
| קוד יציאה | מה ייתכן שהתכוונת |
|---|---|
| 1 | שגיאה כללית |
| 2 | קובץ קלט חסר |
| 3 | הגישה נדחתה |
| 4 | שגיאת רשת |
מה קורה אם לא מגדירים קוד יציאה?
עליך להגדיר תמיד את rdi לפני קריאת המערכת ליציאה. אם תשכח, rdi יכיל את הזבל שנותר באוגר, והתוכנית שלך תסתיים עם קוד אקראי.
אתגר
כתבו תוכנית Assembly מלאה שיוצאת עם קוד יציאה 2 (כדי לסמן "file not found").
קוד ההדפסה מסופק לכם. עליכם רק להוסיף את קריאת המערכת ליציאה.
נסו בעצמכם
section .data
msg db 'Backup complete', 0x0a
msgLen equ $ - msg
section .text
global _start
_start:
; הדפס את ההודעה (שסופקה על ידי סביבת הבדיקה)
mov rax, 1
mov rdi, 1
mov rsi, msg
mov rdx, msgLen
syscall
; הקוד של התלמיד נכתב כאן
%include "solution.asm"השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה יסודות
תרגלו בעצמכם: Assembly אונליין