2ファイルパターン
CoddyのAssemblyジャーニー「基礎」セクションの一部。レッスン 5/45。
このコースでは、すべてのプログラムを2つの別々のファイルを使って作成します。
| ファイル | 用途 |
|---|---|
data.asm | すべてのデータ(文字列、数値、変数)を格納します |
main.asm | すべてのコード(命令、ロジック、フロー)を格納します |
これはアセンブラーによって要求されているわけではありません。すべてを1つのファイルに記述することもできます。しかし、コードとデータを分離すると、プログラムがより整理され、読みやすく、デバッグしやすくなります。
なぜ2つのファイルなのか?
- 整理:データとコードには異なる目的があります。それらを分けておくと、明確に考えやすくなります。
- 再利用性:同じ
data.asmを異なるmain.asmファイルで使用できます。
- 可読性:コードを見つけるために、長い文字列をスクロールし続ける必要がありません。
- 業界の慣行:実際のプロジェクトでは、コードとデータを分離します(ただし、多くの場合はより複雑な方法で分離します)。
仕組み:
main.asmファイルは、%includeディレクティブを使用してdata.asmファイルを読み込みます。これはアセンブラに、「アセンブルする前に、data.asmの内容全体をここに挿入する」よう指示します。
2つのファイルを横に並べた場合:
| data.asm | main.asm |
|---|---|
section .data | %include "data.asm" |
| (variables はここに記述) | section .text |
global _start | |
_start: | |
| (instructions はここに記述) |
各セクションの役割:
| セクション | 目的 | どのファイルか? |
|---|---|---|
section .data | プログラムの実行時にメモリ上に存在するデータを保持します | data.asm |
section .text | 実行可能な命令(コード)を保持します | main.asm |
global _start | リンカーからエントリーポイントを参照できるようにします | main.asm |
_start: | プログラムの実行が開始されるラベル | main.asm |
今は、
section .data、section .text、global _start、または_start:を暗記する必要はありません。これらの各コマンドについては、以降のレッスンで詳しく説明します。今は全体像を確認し、2つのファイルの構造を理解してください。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
基礎のすべてのレッスン
自分で練習してみよう: Assemblyプレイグラウンド