Как я могу увидеть содержимое регистра с плавающей точкой на 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
должен использоваться, в зависимости от того, хотите ли вы видеть значение, представленное как значение одинарной или двойной точности.