終了コード
CoddyのAssemblyジャーニー「基礎」セクションの一部。レッスン 33/45。
プログラムが終了すると、オペレーティングシステムに小さな数値を返します。この数値は終了コードまたは終了ステータスと呼ばれます。
exit コードが重要な理由:
スクリプトは、プログラムが成功したかどうかを確認するために exit コードを使用します。たとえば、バックアップスクリプトは、前のコマンドが成功した場合にのみ続行することがあります。
終了コードはデバッグにも役立ちます。問題ごとに異なるエラーコードを使用できます。
プログラムをつなげて、前のプログラムが成功した場合にのみ次のプログラムを実行することもできます。シェルは次のコマンドを実行する前に終了コードを確認します。
exit コードのルール:
| 終了コード | 意味 |
|---|---|
| 0 | Success:すべて正常に動作しました |
| 1-255 | 何か問題が発生しました |
エラーコードの選択:
1 から 255 までの任意の数値を使用できます。それぞれの数値が何を意味するかは、プログラマーであるあなた次第です。
| 終了コード | 考えられる意味 |
|---|---|
| 1 | 一般的なエラー |
| 2 | 入力ファイルがありません |
| 3 | アクセスが拒否されました |
| 4 | ネットワークエラー |
終了コードを設定しないとどうなりますか?
exit syscall の前に、必ず rdi を設定する必要があります。忘れると、rdi にはレジスタに残っていた不定の値が含まれ、プログラムはランダムなコードで終了します。
チャレンジ
終了コード 2(「file not found」を通知する)で終了する完全なアセンブリプログラムを書いてください。
プリントコードは用意されています。exit syscall を追加するだけです。
自分で試してみよう
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プレイグラウンド