Menu
Coddy logo textTech

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

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

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

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

Но почему их два? Почему процессор не может просто работать напрямую с памятью?

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

Сравнение:

ХарактеристикаРегистрыПамять (RAM)
РасположениеВнутри процессораВне процессора
СкоростьЧрезвычайно высокая (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Проверьте себя

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

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