Я хочу написать простую программу RISCV в сборке, а затем проверить ее. Программа должна просто загрузить значение в регистр и добавить значение к нему:RISCV и Spike: добавьте что-нибудь и прочитайте значение
.file "hello.c"
.text
.align 2
.globl main
.type main, @function
main:
li a0, 2
add a0, a0, 7
.size main, .-main
.ident "GCC: (GNU) 5.3.
Однако, когда я печатаю:
riscv64 неизвестный эльф-GCC hello.s
spke -d рк a.out
рег 0 a0
Он всегда возвращает 0x0 000000000000000. Зачем? Что я делаю не так?
Нормально ли, что нет инструкции возврата в конце 'main'? Не выполняется ли выполнение только следующей функции? (что может привести к нулю а0 и выйти из процесса, если вам повезет). Я не знаком с RISCV или симулятором, который вы используете, но я предполагаю, что 'reg 0 a0' является отладочным выходом из симулятора, а предыдущие две строки - командами оболочки? –