Menu
Coddy logo textTech

Как работают инструкции

Часть раздела Основы путешествия по Assembly на Coddy. Урок 4 из 45.

Вы знаете, что CPU выполняет инструкции одну за другой. Но как CPU узнаёт, какую инструкцию выполнить next? Где хранятся инструкции? И как на самом деле выглядит инструкция?

Инструкции — это числа.

Это фундаментальная истина о компьютерах. Всё является числом. Данные, с которыми вы работаете (например, число 42), являются числом. Адрес, по которому хранятся данные (например, 1000), является числом. И сами инструкции (например, mov, add, cmp) также являются числами.

Когда вы пишете код на языке ассемблера, например mov rax, 5, ассемблер преобразует этот понятный человеку текст в число, которое понимает CPU. Это число называется кодом инструкции.

Где хранятся инструкции?

Инструкции хранятся в памяти так же, как и данные. Для инструкций нет отдельного места. В памяти хранятся и:

  • Данные (числа, символы, массивы)
  • Инструкции (сама программа)

CPU не знает разницы. Он просто читает всё, что находится по адресу памяти, на который указывает Program Counter. Вы кратко узнали о PC в уроке 0.1. Теперь пришло время точно понять, как он работает.

Счётчик команд (также называемый указателем команд) — это специальный регистр внутри CPU. Его единственная задача — хранить адрес памяти следующей инструкции, которую необходимо выполнить.

Цикл выборки и выполнения:

ЦП бесконечно повторяет следующие три шага:

ШагЧто происходит
1. FETCHRead инструкцию по адресу, указанному в PC
2. EXECUTEPerform эту инструкцию
3. ADVANCEMove PC к следующей инструкции

Простой пример:

Если PC = 1000, CPU:

  • извлекает инструкцию по адресу 1000
  • выполняет её
  • перемещает PC к следующему адресу (1000 + размер инструкции)

Затем это повторяется с новым значением PC.

Как выглядит инструкция:

Каждая инструкция состоит из двух частей:

ЧастьЧто она делаетПример
ОпкодЧто нужно сделатьmov, add, cmp
ОперандыС чем это нужно сделатьrax, 5, [result]

Некоторые инструкции имеют один операнд (например, inc rax, чтобы прибавить 1). Некоторые имеют два (например, mov rax, 5). Некоторые имеют три (например, add rax, rbx, rcx в некоторых архитектурах).

Попробуйте сами

В этом уроке нет задания по программированию.

quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Assembly