2017-05-14 5 views
0

J'ai étudié l'assemblage dernièrement et je n'arrive pas à comprendre comment les exceptions fonctionnent exactement. Plus spécifique, je reçois le message Exception 6 survenu et ignoré. Quelqu'un peut-il expliquer ce que cela signifie exactement? J'utilise qtspim.Exceptions MIPS qu'est-ce qu'ils signifient

+0

Après quelques secondes de googling, il semble que ce soit un simulateur (spim) pour vous aider, les quelques choses que j'ai vues de la main sont des choses que le vrai matériel devrait/devrait simplement accrocher. Accès non-alignés, récupération des instructions en dehors de cet espace d'adressage, etc. Vous avez un bug dans votre code, cherchez-le. Je ne sais pas assez sur spim pour savoir si cela vous dit où cela s'est produit (quelle instruction ou adresse, etc) est-ce qu'il y a une fonctionnalité pour stopper/se bloquer/crash au point d'échec plutôt qu'ignorer et essayer de continuer? –

Répondre

0

Des exceptions peuvent être causées par du matériel ou des logiciels. Une exception est comme un appel de fonction non planifié qui saute à une nouvelle adresse. Le programme peut rencontrer une condition d'erreur telle que une instruction indéfinie. Le programme saute ensuite au code dans le système d'exploitation (OS), qui peut choisir de terminer le programme. Les autres causes d'exceptions sont la division par zéro, les tentatives de lecture de mémoire inexistante, les dysfonctionnements matériels, les points d'arrêt du débogueur et le débordement arithmétique. Le processeur enregistre la cause d'une exception et la valeur du PC au moment où l'exception se produit. Il passe ensuite à la fonction du gestionnaire d'exceptions. Le gestionnaire d'exceptions est du code (généralement dans le système d'exploitation) qui examine la cause de l'exception et répond de manière appropriée. Il retourne ensuite au programme que était en train d'exécuter avant que l'exception ne se produise.

Dans MIPS, le gestionnaire d'exceptions est toujours situé à 0x80000180. Lorsqu'une exception se produit, le processeur passe toujours à cette adresse d'instruction, quelle qu'en soit la cause.

L'architecture MIPS utilise un registre spécial, appelé registre Cause , pour enregistrer la cause de l'exception.

MIPS utilise un autre registre à usage spécial appelé Exception Programme de lutte contre (EPC) pour stocker la valeur du PC au moment où une exception a lieu. Le processeur retourne à l'adresse EPC après en gérant l'exception. Ceci est analogue à l'utilisation de $ra pour stocker l'ancienne valeur du PC pendant une instruction jal.