Регистры против памяти
Часть раздела Основы путешествия по Assembly на Coddy. Урок 3 из 45.
Теперь вы узнали о двух местах, где данные могут храниться внутри компьютера:
- Регистры: крошечные ячейки хранения внутри CPU
- Память (RAM): огромная сетка пронумерованных ячеек за пределами CPU
Но почему есть два места? Почему ЦП не может просто работать непосредственно с памятью?
Ответ — скорость. Регистры чрезвычайно быстры, потому что находятся внутри CPU. Память работает медленнее, потому что находится снаружи. CPU может получить доступ к регистру за один такт, но доступ к памяти занимает гораздо больше времени.
Сравнение бок о бок:
| Характеристика | Регистры | Память (RAM) |
|---|---|---|
| Расположение | Внутри CPU | Вне CPU |
| Скорость | Чрезвычайно высокая (1 цикл) | Ниже (много циклов) |
| Количество ячеек хранения | Очень мало (16–32 на x86-64) | Миллионы или миллиарды |
| Размер каждой ячейки | 8 байт (64 бита) | 1 байт |
| Как к ним обращаться | По имени (rax, rbx, rcx...) | По адресу (1000, msg, buffer) |
| Энергозависимая? | Да (исчезает при отключении питания) | Да (исчезает при отключении питания) |
Самое важное правило в ассемблере:
ЦП не может работать непосредственно с данными в памяти. Сначала данные необходимо загрузить в регистры.
Это не является необязательным. Так устроен CPU. Каждое сложение, каждое сравнение, каждое перемещение данных должно проходить через регистр.
Трёхшаговый шаблон, который вы будете постоянно использовать:
| Шаг | Что происходит | Пример |
|---|---|---|
| 1. LOAD | Скопировать данные из памяти в регистр | mov rax, [count] |
| 2. WORK | Выполнить действие с регистром | add rax, 5 |
| 3. STORE | Скопировать результат обратно в память (если необходимо) | mov [result], rax |
Что произойдёт, если вы забудете это правило?
Если вы попытаетесь сложить два числа, которые оба находятся в памяти, ассемблер выдаст ошибку. CPU просто не может этого сделать. Сначала вы должны загрузить их в регистры.
Попробуйте сами
В этом уроке нет задания по программированию.
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
1Машина
Что такое CPUПамятьРегистры против памятиКак работают инструкцииПаттерн двух файловАрхитектура x86-64Потренируйтесь самостоятельно: Песочница Assembly