رموز الخروج (Exit Codes)
جزء من قسم الأساسيات في رحلة Assembly على Coddy — الدرس 33 من 45.
عندما يخرج برنامجك، فإنه يرسل رقماً صغيراً مرة أخرى إلى نظام التشغيل. يُسمى هذا الرقم رمز الخروج أو حالة الخروج.
لماذا تهم رموز الخروج:
تستخدم البرامج النصية رموز الخروج للتحقق مما إذا كان البرنامج قد نجح. على سبيل المثال، قد يستمر نص النسخ الاحتياطي فقط إذا نجح الأمر السابق.
تساعد رموز الخروج أيضًا في تصحيح الأخطاء. يمكنك استخدام رموز خطأ مختلفة لمشكلات مختلفة.
يمكنك أيضًا ربط البرامج معًا بحيث يتم تشغيل برنامج واحد فقط إذا نجح البرنامج السابق. يتحقق الغلاف (shell) من رمز الخروج قبل تشغيل الأمر التالي.
قواعد رموز الخروج:
| رمز الخروج | المعنى |
|---|---|
| 0 | نجاح — كل شيء عمل بشكل صحيح |
| 1-255 | حدث خطأ ما |
اختيار رموز الخطأ:
يمكنك استخدام أي رقم من 1 إلى 255. ما يعنيه كل رقم يعود إليك بصفتك المبرمج.
| رمز الخروج | ما قد تعنيه |
|---|---|
| 1 | خطأ عام |
| 2 | ملف الإدخال مفقود |
| 3 | تم رفض الإذن |
| 4 | خطأ في الشبكة |
ماذا يحدث إذا لم تقم بتعيين رمز خروج؟
يجب عليك دائمًا تعيين rdi قبل استدعاء النظام exit. إذا نسيت، فسيحتوي rdi على أي بيانات عشوائية بقيت في السجل، وسيخرج برنامجك برمز عشوائي.
التحدي
اكتب برنامج assembly كاملاً ينتهي برمز الخروج 2 (للإشارة إلى "file not found").
كود الطباعة متوفر لك. ما عليك سوى إضافة syscall الخاص بـ exit.
جرّب بنفسك
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"يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
2أنظمة العد
لماذا النظام الثنائي؟الأعداد الثنائيةمن العشري إلى الثنائيلماذا النظام الست عشري؟من الست عشري إلى العشريمن العشري إلى الست عشريASCII والست عشري5استدعاء النظام Exit Syscall
ما هو الـ Syscall؟استدعاء النظام Exit Syscall (60)رموز الخروج (Exit Codes)ملخص: الخروج النظيف (Clean Exit)