Как работают инструкции
Часть раздела Основы путешествия по Assembly на Coddy — урок 4 из 45.
Вы знаете, что процессор выполняет инструкции одну за другой. Но как процессор узнает, какую инструкцию выполнять следующей? Где хранятся инструкции? И как на самом деле выглядит инструкция?
Инструкции — это числа.
Это фундаментальная истина о компьютерах. Всё есть число. Данные, с которыми вы работаете (например, число 42), — это число. Адрес, по которому находятся данные (например, 1000), — это число. И сами инструкции (такие как mov, add, cmp) — это тоже числа.
Когда вы пишете код на ассемблере, такой как mov rax, 5, ассемблер преобразует этот человекочитаемый текст в число, которое понимает процессор. Это число называется кодом инструкции.
Где хранятся инструкции?
Инструкции хранятся в памяти точно так же, как и данные. Для инструкций нет какого-то специального места. Память содержит и то, и другое:
- Данные (числа, символы, массивы)
- Инструкции (сама программа)
Процессор не видит разницы. Он просто считывает то, что находится по адресу памяти, на который указывает счетчик команд (Program Counter). Вы кратко узнали о PC в уроке 0.1. Теперь пришло время понять, как именно он работает.
Программный счетчик (также называемый указателем команд) — это специальный регистр внутри процессора. Его единственная задача — хранить адрес памяти следующей инструкции, которую необходимо выполнить.
Цикл «выборка-исполнение»:
Процессор бесконечно повторяет эти три шага:
| Шаг | Что происходит |
|---|---|
| 1. ВЫБОРКА (FETCH) | Считать инструкцию по адресу в PC |
| 2. ИСПОЛНЕНИЕ (EXECUTE) | Выполнить эту инструкцию |
| 3. ПЕРЕХОД (ADVANCE) | Переместить PC к следующей инструкции |
Простой пример:
Если PC = 1000, процессор:
- Извлекает инструкцию по адресу 1000
- Выполняет её
- Перемещает PC к следующему адресу (1000 + размер инструкции)
Затем это повторяется с новым значением PC.
Как выглядит инструкция:
Каждая инструкция состоит из двух частей:
| Часть | Что она делает | Пример |
|---|---|---|
| Опкод | Что СДЕЛАТЬ | mov, add, cmp |
| Операнды | НАД ЧЕМ это сделать | rax, 5, [result] |
У некоторых инструкций один операнд (например, inc rax для прибавления 1). У некоторых — два (например, mov rax, 5). У некоторых — три (например, add rax, rbx, rcx в некоторых архитектурах).
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Машина
Что такое CPUПамятьРегистры против памятиКак работают инструкцииПаттерн двух файловАрхитектура x86-64