Je développe un ISS RiscV et quand j'exécute la suite de vérification, j'obtiens une erreur avec l'instruction add. Je clouer le problème à cette partie du code (registre états lors de l'exécution sous forme de commentaires):erreurs dans une implémentation RiscV ISS
lui ra,0x80000 ;; ra = 0x80000000
lui sp,0xffff8 ;; sp = 0xffff8000
add t5,ra,sp ;; t5 = 0x17fff8000
lui t4,0xffff0 ;; t4 = 0xffff0000
addiw t4,t4,-1 ;; t4 = 0xfffeffff
slli t4,t4,0xf ;; t4 = 0x7fff7fff8000
li gp,7 ;; gp = 7
bne t5,t4,800005f0 <fail> ;; The program branches to fail :(
registres Il est évident que t5 et t4 ne présentent pas les mêmes valeurs lors de l'exécution et donc, les branches du programme à l'échec de routine .
Quelqu'un peut-il indiquer quelles instructions génèrent de mauvais résultats dans mon code?
Vive
Bonjour. Qu'est-ce que "l'ISS"? Est-ce public? Avez-vous vérifié riscvemu https://bellard.org/riscvemu/ par bellard et rv8 https://github.com/rv8-io/rv8 par michaeljclark? – osgx
Salut, c'est un simulateur de jeu d'instructions que je construis juste pour m'amuser. Merci pour le lien. Je vais vérifier cela. –