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" |
| (ここに変数を記述します) | section .text |
global _start | |
_start: | |
| (ここに命令を記述します) |
各セクションの役割:
| セクション | 目的 | 対象ファイル |
|---|---|---|
section .data | プログラム実行時にメモリ内に存在するデータを保持します | data.asm |
section .text | 実行可能な命令(コード)を保持します | main.asm |
global _start | リンカーに対してエントリポイントを公開します | main.asm |
_start: | プログラムの実行が開始されるラベルです | main.asm |
現時点で
section .data、section .text、global _start、または_start:を暗記する必要はありません。これらの各コマンドについては、以降のレッスンで詳しく説明します。今のところは、全体像を見て、2つのファイルの構造を理解するだけで十分です。
自分で試してみよう
このレッスンにはコードチャレンジは含まれていません。
このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。