退出码
本课属于 Coddy Assembly 学习旅程的“基础知识”单元。第 33 课,共 45 课。
程序退出时,会向操作系统返回一个小数字。这个数字称为退出代码或退出状态。
退出码为什么重要:
脚本使用退出码来检查程序是否成功。例如,备份脚本可能只有在上一个命令成功后才会继续运行。
退出码也有助于调试。你可以为不同的问题使用不同的错误码。
你还可以将多个程序串联起来,这样只有前一个程序成功运行后,下一个程序才会运行。Shell 会在运行下一个命令之前检查退出码。
退出代码的规则:
| 退出代码 | 含义 |
|---|---|
| 0 | 成功:一切正常 |
| 1-255 | 出现了问题 |
选择错误代码:
你可以使用 1 到 255 之间的任意数字。每个数字代表什么,由你这个程序员决定。
| 退出代码 | 你可能想表达的意思 |
|---|---|
| 1 | 一般错误 |
| 2 | 缺少输入文件 |
| 3 | 权限被拒绝 |
| 4 | 网络错误 |
如果你不设置退出代码,会发生什么?
你必须始终在退出系统调用前设置 rdi。如果忘记了,rdi 中就会保留寄存器里之前的随机值,程序会以随机代码退出。
挑战
编写一个完整的汇编程序,以退出代码 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 在线编辑器