Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.orgfree.com

emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.


Учебные модели компьютера



Модели (software):

"Е14" (parallel !!!)
"S9PU" (parallel)

Модели (hardware):






Награды сайта
Награды сайта 2005

Пример простой программы для RISC-V:
умножение числа на 10

Задача

В регистр x6 задается исходное целое число x.
Необходимо вычислить значение 10x и поместить результат в регистр x7.

Комментарии

  • Поскольку в базовом наборе инструкций нет умножения, воспользоваться тем, что сдвиг числа влево на N разрядов эквивалентен умножению на 2N.
  • Данная задача имеет практическое применение, поскольку при вводе с клавиатуры десятичного числа используется формула R = 10R+C, где R - это результат, а C - очередная введенная цифра от 0 до 9.

Распределение регистров

x6 - множимое
x7 - произведение
x31 - рабочий (2x)

Решение

исходная
программа
результат
препроцессинга
код
RISC-V
действиекомментарии
li x6,9ADDI X6, X0, 9 00 90 03 13 x6:=0+9(псевдооп. li => ADDI); аргумент x
slli x7,x6,3SLLI X7, X6, 3 00 33 13 93 x7:=x6 сдвиг влево на 3 битаумножение на 23: результат 8x
slli x31,x6,1SLLI X31, X6, 1 00 13 1F 93 x31:=x6 сдвиг влево на 1 битумножение на 2: результат 2x
add x7,x7,x31ADD X7, X7, X31 01 F3 83 B3 x7:=x7+x31ответ: 8x+2x = 10x
ecallECALL X0, X0, 0 00 00 00 73 системный вызовзавершение программы

Примечание
Из стандарта неясно, как мы должны завершать свою программу. Я предлагаю в качестве окончания ставить системный вызов ecall с нулевыми параметрами. Возможно, авторы RISC-V имели ввиду что-то другое, но предложенный мной вариант вполне реалистичен. В любом случае в конце программы обязательно должна стоять какая-либо специальная инструкция, иначе процессор "пойдет дальше по памяти".


Автор сайта - Евгений Александрович Еремин (Пермский государственный педагогический университет). e_eremin@yahoo.com


Free Web Hosting