Регистры

Регистры

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

Сначала: что такое бит? Бит — это один 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 (счётчик команд), содержит адрес текущей подсвеченной строки. Это число — всё, что процессор знает о своей позиции в программе: он выбирает инструкцию по адресу в счётчике команд, выполняет её, а затем прибавляет четыре к счётчику команд, чтобы перейти к следующей инструкции. Регистр получает своё значение, когда выполняется в его строке, а вывод появляется только тогда, когда выполняется первый .