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