Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Problème avec les branchements et les boucles #2

Closed
LBF38 opened this issue Oct 28, 2022 · 1 comment
Closed

Problème avec les branchements et les boucles #2

LBF38 opened this issue Oct 28, 2022 · 1 comment
Assignees
Labels
bug Something isn't working

Comments

@LBF38
Copy link
Owner

LBF38 commented Oct 28, 2022

Après plusieurs essais infructueux, je ne parviens toujours pas à faire des boucles ou à utiliser les branchements pour des fonctions simples en assembleur.

La VM ne semble pas reconnaître les instructions de branchements lors de boucles alors que celle-ci fonctionne individuellement.
Mais en testant chacune des instructions (jmp, braz, branz), elles fonctionnent quand elles sont seules dans leur programme.
Peut-être que cela vient d'un problème de programmation en assembleur ? Je ne sais pas.

Cela peut également venir des opérateurs de comparaison qui fonctionnerait mal.. C'est bizarre.

@LBF38 LBF38 added the bug Something isn't working label Oct 28, 2022
@LBF38 LBF38 self-assigned this Oct 28, 2022
@LBF38 LBF38 mentioned this issue Nov 7, 2022
LBF38 added a commit that referenced this issue Nov 7, 2022
@LBF38
Copy link
Owner Author

LBF38 commented Nov 7, 2022

Résolution du problème

Mes problèmes de branchements venaient du fait que j'avais mal géré les adresses au niveau de la fonction run().
Le PC (Program Counter) était augmenté en fin de boucle après évaluation. Or, pour garder une cohérence avec les cours et pour le flux des données, il est plus simple d'incrémenter le PC lors de la récupération des instructions.

Ainsi, une fois cette erreur corrigée et le remplacement des appels aux registres (je mettais rs au lieu de registres[rs]), tout fonctionne !
L'assembleur reconnaît les instructions du fichier instruction.md et les transforme en hexadécimal/binaire.
Puis, la VM (ISS) reconnaît les instructions et les exécute en reconnaissant les opcodes et chacune des parties de l'instruction !

FinEx de l'issue !

@LBF38 LBF38 closed this as completed Nov 7, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

1 participant