Паттерн двух файлов
Часть раздела Основы путешествия по Assembly на Coddy. Урок 5 из 45.
На протяжении всего курса ты будешь писать каждую программу, используя два отдельных файла:
| Файл | Назначение |
|---|---|
data.asm | Хранит все данные (строки, числа, variables) |
main.asm | Хранит весь код (instructions, логику, flow) |
Это не требуется ассемблером. Ты мог бы разместить всё в одном файле. Но разделение кода и данных делает твои программы более аккуратными, облегчает их чтение и отладку.
Зачем нужны два файла?
- Организация: данные и код имеют разные цели. Если хранить их отдельно, тебе будет проще ясно мыслить.
- Повторное использование: ты можешь использовать один и тот же
data.asmс разными файламиmain.asm.
- Читаемость: вам никогда не придётся прокручивать длинные строки, чтобы найти свой код.
- Практика в индустрии: в реальных проектах код и data разделяются (хотя часто более сложными способами).
Как это работает:
Файл main.asm подключает файл data.asm с помощью директивы %include. Это сообщает ассемблеру: «вставить всё содержимое data.asm прямо сюда перед сборкой».
Два файла рядом:
| 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:. Мы подробно разберём каждую из этих команд в следующих уроках. А пока просто взгляни на общую картину и пойми структуру двух файлов.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Машина
Что такое CPUПамятьРегистры против памятиКак работают инструкцииПаттерн двух файловАрхитектура x86-64Потренируйтесь самостоятельно: Песочница Assembly