Найти в Дзене
IT Еxtra

Как работает компьютер? Часть 61. Весь путь от текста до работающей программы

Предыдущий урок: Как работает компьютер? Часть 60. Процесс сборки: от текста к машинному коду Давайте пройдём весь путь от текста до работающей программы по шагам. Это похоже на производственную цепочку на заводе. Шаг 0: Подготовка (На компьютере уже есть всё необходимое) Что есть на компьютере до начала работы: Установленная ОС (Windows/Linux/macOS). Она — главный менеджер. Установленный Ассемблер (например, NASM, MASM, GAS). Это наш переводчик. Он представляет собой готовый исполняемый файл (nasm.exe на Windows или /usr/bin/nasmна Linux). Установленный Линковщик (например, ld). Это наш сборщик. Он тоже готовый исполняемый файл. Процессор, SSD/HDD, ОЗУ (RAM) — это наше оборудование. Компьютер не знает что делать с файлом .asm. Файл .asm — это просто текстовый файл, как документ Word или *.txt. Вы говорите компьютеру, что делать. Вы вручную запускаете программу-ассемблер и передаёте ей этот файл в качестве аргумента. Шаг 1: Запуск Ассемблера (Команда в Терминале) Действие программис

Предыдущий урок: Как работает компьютер? Часть 60. Процесс сборки: от текста к машинному коду

Давайте пройдём весь путь от текста до работающей программы по шагам. Это похоже на производственную цепочку на заводе.

Шаг 0: Подготовка (На компьютере уже есть всё необходимое)

Что есть на компьютере до начала работы:

  1. Установленная ОС (Windows/Linux/macOS). Она — главный менеджер.
  2. Установленный Ассемблер (например, NASM, MASM, GAS). Это наш переводчик. Он представляет собой готовый исполняемый файл (nasm.exe на Windows или /usr/bin/nasmна Linux).
  3. Установленный Линковщик (например, ld). Это наш сборщик. Он тоже готовый исполняемый файл.
  4. Процессор, SSD/HDD, ОЗУ (RAM) — это наше оборудование.

Компьютер не знает что делать с файлом .asm. Файл .asm — это просто текстовый файл, как документ Word или *.txt. Вы говорите компьютеру, что делать. Вы вручную запускаете программу-ассемблер и передаёте ей этот файл в качестве аргумента.

IT Extra

Шаг 1: Запуск Ассемблера (Команда в Терминале)

Действие программиста: Вы открываете терминал и вводите команду:

nasm -f elf64 program.asm -o program.o

  1. Операционная система слышит команду.
  2. Операционная система ищет на SSD исполняемый файл nasm по известному ей пути (например, C:\Program Files\NASM\nasm.exe).
  3. Операционная система загружает машинный код программы nasm с SSD в RAM.
  4. Операционная система настраивает процессор: Она выделяет ресурсы, подготавливает регистры процессора и передаёт ему управление, указав на первую команду кода nasm в RAM.
  5. Процессор начинает выполнять код nasm. Он последовательно считывает команды программы nasm из ОЗУ, выполняет их, используя свои регистры для промежуточных вычислений.

Шаг 2: Работа Ассемблера (Трансляция)

Что делает процессор, выполняя код программы nasm:

  1. Код nasm приказывает: «Прочитай файл program.asm с SSD».
  2. Процессор выполняет команды ввода-вывода. Данные с SSD читаются и помещаются в RAM.
  3. Код nasm начинает анализировать текст из RAM. Он берёт первую строку, например, MOV R1, 5.
  4. Код nasm обращается к своей внутренней таблице соответствий, которая хранится в его данных в ОЗУ. Он ищет, что мнемоника MOV с операндом R1 соответствует машинному коду 0xB8.
  5. Число 5 конвертируется в двоичный вид (0x05).
  6. Код nasm приказывает: «Запиши последовательность байтов 0xB8, 0x05, 0x00 в новый файл program.o на SSD».
  7. Процессор выполняет эту команду, записывая данные через Операционную систему на SSD.

На SSD появляется объектный файл (program.o или program.obj). Это уже машинный код, но ещё не готовый к запуску.

Шаг 3: Линковка (Команда в Терминале)

Вы вводите следующую команду:

ld program.o -o program

Повторяется процесс как в Шаге 1, но теперь вместо nasm загружается и выполняется программа-линковщик ld.

  • Код ld читает объектный файл program.o с SSD в RAM.
  • Он выполняет свою задачу: подставляет адреса (например, подставляет точный адрес для метки _start), подключает код из стандартных библиотек (если они нужны).
  • Код ld формирует готовый исполняемый файл в формате, понятном ОС (ELF для Linux, PE для Windows), и записывает его на SSD как program.

На SSD появляется готовый к запуску исполняемый файл program (или program.exe).

Шаг 4: Запуск Программы

Вы вводите команду:

./program

  1. Операционная система находит на SSD файл program, распознаёт его как исполняемый
  2. Операционная система загружает машинный код вашей программы из файла program в RAM.
  3. Операционная система настраивает процессор: Она выделяет ресурсы, подготавливает регистры и передаёт управление процессору на точку входа — первую команду вашей программы в RAM.
  4. Процессор начинает выполнять код вашей программы. Он считывает команды 0xB8, 0x05, 0x00... и выполняет их: помещает значение 5 в регистр R1, выполняет сложение и т.д.

Ваша программа работает.

Спасибо за внимание!

Следующий урок:
Как работает компьютер? Часть 62. Зачем сегодня нужен ассемблер?

👍 Ставьте лайки если хотите разбор других интересных тем.

👉 Подписывайся на IT Extra на Дзен чтобы не пропустить следующие статьи

________________________________________________________________________👇
Понравилась статья? В нашем Telegram-канале ITextra мы каждый день делимся такими же понятными объяснениями, а также свежими новостями и полезными инструментами. Подписывайтесь, чтобы прокачивать свои IT-знания всего за 2 минуты в день!

IT Extra