Menu
CoddyTech

Регистры против памяти

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

Теперь ты узнал о двух местах, где могут храниться данные внутри компьютера:

  • Регистры: крошечные ячейки хранения внутри CPU
  • Память (RAM): огромная сетка пронумерованных ячеек за пределами CPU

Но почему есть два места? Почему ЦП не хранит всё в памяти?

Ответ — скорость. Регистры чрезвычайно быстры, потому что находятся внутри ЦП. Память работает медленнее, потому что она находится снаружи. ЦП может получить доступ к регистру за один такт, а доступ к памяти занимает гораздо больше времени.

Сравнение бок о бок:

ХарактеристикаРегистрыПамять (RAM)
РасположениеВнутри CPUЗа пределами CPU
СкоростьОчень высокая (1 цикл)Ниже (много циклов)
Количество ячеек храненияОчень мало (16–32 на x86-64)Миллионы или миллиарды
Размер каждой ячейки8 байт (64 бита)1 байт
Как к ним обращатьсяПо имени (rax, rbx, rcx...)По адресу (1000, msg, buffer)
Энергозависимость?Да (данные исчезают при отключении питания)Да (данные исчезают при отключении питания)

Самое важное правило в ассемблере:

Инструкция может использовать не более одного операнда в памяти. Чтобы объединить два значения, которые оба находятся в памяти, сначала загрузите одно из них в регистр.

Регистры — это также место, где хранятся значения, с которыми вы работаете, потому что каждое обращение к памяти происходит медленно.

Шаблон из трёх шагов, который ты будешь постоянно использовать:

ШагЧто происходитПример
1. LOADКопирование данных из памяти в регистрmov rax, [count]
2. WORKВыполнение действия с регистромadd rax, 5
3. STOREКопирование результата обратно в память (если необходимо)mov [result], rax

Что произойдёт, если ты забудешь это правило?

Если ты попытаешься сложить два числа, которые оба находятся в памяти, ассемблер выдаст ошибку. ЦП не может этого сделать. Сначала ты должен загрузить одно из них в регистр.

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

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

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

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

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

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