Как я могу увидеть содержимое регистра с плавающей точкой на spike?

Я работаю с кодом RISCV и хочу смоделировать его с помощью инструмента Spike. Целью симуляции является просмотр содержимого некоторых регистров с плавающей запятой.

Итак, если я хочу увидеть содержимое целочисленного регистра, я использую следующую команду:

reg 0 s0

но если я попытаюсь использовать ту же команду для регистра с плавающей запятой:

reg 0 ft0 

это всегда показывает мне все биты, установленные в нули............

Я прилагаю код ассемблера, над которым я работаю....

 10164: 0000f053            fadd.s  ft0,ft1,ft0
 10168: fe042227            fsw ft0,-28(s0)

В этом фрагменте кода я использовал команду reg, чтобы увидеть содержимое регистров с плавающей точкой ft1 и ft0 (reg 0 ft1 или reg 0 ft0) после инструкции fadd.s, результат:

core   0: 0x0000000000010164 (0x0000f053) fadd.s  ft0, ft1, ft0
: reg 0 ft0
0x0000000000000000

Но если я ищу содержимое, сохраненное в памяти после выполнения инструкции fsw, результат не равен нулю, и это правильно

core   0: 0x0000000000010168 (0xfe042227) fsw     ft0, -28(s0)
: mem 0 7fffff04
0x0000000040e00000

Как видите, вопрос в том, почему использование команды reg для просмотра содержимого регистра с плавающей запятой всегда приводит к нулям в качестве содержимого регистра. Что-то не так с форматом reg и регистрами с плавающей точкой?

1 ответ

Решение

Для регистров с плавающей запятой команда fregs или же fregd должен использоваться, в зависимости от того, хотите ли вы видеть значение, представленное как значение одинарной или двойной точности.

Другие вопросы по тегам