Регістри

Регістри

Регістри: руки процесора

Спочатку: що таке біт? Біт — це один 0 або 1, найменша одиниця інформації, яку комп'ютер може зберегти. Складіть 32 таких біти разом, і отримаєте 32-бітне число, яке може лічити від 0 приблизно до 4 мільярдів. Кожен регістр і кожен слот пам'яті в RISC-V зберігає одне 32-бітне число.

Регістр — це невеликий слот зберігання всередині процесора, який зберігає одне 32-бітне число. RISC-V надає 32 регістри. Оскільки вони розташовані в ядрі процесора, використовувати регістри значно швидше, ніж основну пам'ять, — на порядки. Кілька з них покриють більшість того, що ви пишете: t0–t2 (тимчасові значення), a0–a2 (аргументи та результати), zero (завжди 0), sp (покажчик стека) і ra (адреса повернення).

ℹ
Вкладка Simulator показує кожен регістр у міру зміни його значення під час виконання програми. Спостереження за цим поданням — найшвидший спосіб відчути, як поводяться регістри.
Ваша перша програма: вивести 42
# Вивести число 42, потім вийти.
# a7 обирає службу, а a0 несе значення.
li a7, 1 # служба 1 = вивести ціле число
li a0, 42 # значення для виведення
ecall # виконати
li a7, 10 # служба 10 = вихід
ecall

означає load immediate (завантажити безпосереднє значення) і поміщає константу в регістр. вибирає службу 1, яка друкує ціле число. поміщає число для друку в a0. передає керування системі, яка друкує значення в a0. Потім вибирає службу виходу, і завершує програму. Натисніть Run, потім змініть 42 і запустіть програму знову.

Виконання програми
0x400000li a7, 1
0x400004li a0, 42
0x400008ecall
0x40000cli a7, 10
0x400010ecall
a71
a0—
вивід—
pc0x400000

Встановлення a7 у 1 змушує наступний ecall вивести число.

На рисунку нижче простежуються п'ять рядків вище в міру їх виконання симулятором. Кожен рядок несе адресу, яку він займає після завантаження програми, і адреси відстоять одна від одної на чотири байти, тому що кожна інструкція RISC-V має ширину чотири байти. Поле з міткою pc, скорочення від program counter (лічильник команд), містить адресу поточного підсвіченого рядка. Це число — усе, що процесор знає про свою позицію в програмі: він вибирає інструкцію за адресою в лічильнику команд, виконує її, а потім додає чотири до лічильника команд, щоб перейти до наступної інструкції. Регістр отримує своє значення, коли виконується у його рядку, а вивід з'являється лише тоді, коли виконується перший .