Данному образовательному сайту пришлось несколько раз менять свое имя. С 2022 года доступ к нему обеспечивается по URL
emc.km.ru (2001-2007) ==> educomp.org.ru (2007-2011) ==> educomp.runnet.ru (2011-2021) ==> emc.orgfree.com (2022-...)
Более подробно об истории сайта можно прочитать здесь.
|
Пример простой программы для RISC-V:
|
исходная программа | результат препроцессинга | код RISC-V |
действие | комментарии |
---|---|---|---|---|
li x6,9 | ADDI X6, X0, 9 | 00 90 03 13 | x6:=0+9 | (псевдооп. li => ADDI); аргумент x |
slli x7,x6,3 | SLLI X7, X6, 3 | 00 33 13 93 | x7:=x6 сдвиг влево на 3 бита | умножение на 23: результат 8x |
slli x31,x6,1 | SLLI X31, X6, 1 | 00 13 1F 93 | x31:=x6 сдвиг влево на 1 бит | умножение на 2: результат 2x |
add x7,x7,x31 | ADD X7, X7, X31 | 01 F3 83 B3 | x7:=x7+x31 | ответ: 8x+2x = 10x |
ecall | ECALL X0, X0, 0 | 00 00 00 73 | системный вызов | завершение программы |
Примечание
Из стандарта неясно, как мы должны завершать свою программу. Я предлагаю в качестве окончания ставить системный вызов ecall с нулевыми параметрами. Возможно, авторы RISC-V имели ввиду что-то другое, но предложенный мной вариант вполне реалистичен. В любом случае в конце программы обязательно должна стоять какая-либо специальная инструкция, иначе процессор "пойдет дальше по памяти".