Регистры
Регистры: руки процессора
Сначала: что такое бит? Бит — это один 0 или 1, наименьшая единица информации, которую компьютер может хранить. Соедините 32 таких бита вместе, и получится 32-битное число, которое может считать от 0 примерно до 4 миллиардов. Каждый регистр и каждая ячейка памяти в RISC-V хранит одно 32-битное число.
Регистр — это небольшая ячейка хранения внутри процессора, которая хранит одно 32-битное число. RISC-V предоставляет 32 регистра. Поскольку они находятся в ядре процессора, использовать регистры гораздо быстрее, чем основную память, — на порядки. Несколько из них покроют большую часть того, что вы пишете: t0–t2 (временные значения), a0–a2 (аргументы и результаты), zero (всегда 0), sp (указатель стека) и ra (адрес возврата).
# Вывести число 42, а затем выйти.# a7 выбирает службу, а a0 несёт значение.li a7, 1 # услуга 1 = печать целого числаli a0, 42 # значение для печатиecall # сделать этоli a7, 10 # услуга 10 = выходecall
означает load immediate (загрузить непосредственное значение) и помещает константу в регистр. выбирает службу 1, которая печатает целое число. помещает число для печати в a0. передаёт управление системе, которая печатает значение в a0. Затем выбирает службу выхода, и завершает программу. Нажмите Run, затем измените 42 и запустите программу снова.
Установка a7 в 1 заставляет следующий ecall вывести число.
pc, сокращение от program counter (счётчик команд), содержит адрес текущей подсвеченной строки. Это число — всё, что процессор знает о своей позиции в программе: он выбирает инструкцию по адресу в счётчике команд, выполняет её, а затем прибавляет четыре к счётчику команд, чтобы перейти к следующей инструкции. Регистр получает своё значение, когда выполняется в его строке, а вывод появляется только тогда, когда выполняется первый .