CHG_U3_HLR de la librairie

CHG_U3_HLR de la librairie

by Sami Omar Charles Abuzakuk -
Number of replies: 4

Bonjour,

En testant fibonacci.gb qui ne fonctionnait pas chez nous, nous nous sommes rendu compte que notre programme restait bloqué dans une boucle infinie, dans la bootrom, entre les Bytes 157 et 159. Cette boucle infinie est causée par l'instruction préfixée OP_RES_0_HLR (Byte 155) : 0xCB 0x86 (correspondant à res 0, [hl] dans le code asm).

Cette opération de la famille CHG_U3_HLR est effectuée par la librairie que vous nous avez fournie mais ne semble avoir aucun effet (ci-dessous).


===========cpu.c : PC = 155=========

OPCODE = 0x86, Family = 65

===========cpu-alu.c : PC = 155=========

OPCODE : 0x86, Family : 65 (CHG_U3_HLR)

HL before library : 0xff0f

HL after library : 0xff0f instead of 0xff0e


Nous avons aussi tenté d'écrire plusieurs programmes sur le modèle du test-cpu-week08.c et la aussi aucune modification de HL. Avons-nous fait une erreur (cette famille est testée dans unit-test-cpu-dispatch.c et les tests passent) ou est-ce un problème réel de la librairie ?


Merci d'avance



In reply to Sami Omar Charles Abuzakuk

Re: CHG_U3_HLR de la librairie

by Jean-Cédric Chappelier -

avant tout : est-ce que les tests unit-test-cpu-dispatch et unit-test-alu_ext passent chez vous.
cf https://moodlearchive.epfl.ch/2019-2020/mod/forum/discuss.php?d=34084

In reply to Jean-Cédric Chappelier

Re: CHG_U3_HLR de la librairie

by Sami Omar Charles Abuzakuk -
Oui, tous les tests passent.
In reply to Sami Omar Charles Abuzakuk

Re: CHG_U3_HLR de la librairie

by Jean-Cédric Chappelier -

Si nos tests passent... je ne vois pas trop d'autre piste que votre code tests de boucles n'est pas correct. En l'occurrence dans la bootrom c'est (comme expliqué dans la partie tests de la donnée) un JR Z, -4 (opcode 0x28 ; famille JR_CC_E8) qui boucle et qui doit passer à POP HL (opcode 0xE1 ; famille POP_R16) ensuite. Je suppose que vous gèrez mal ce saut (JR Z), par exemple en ne mettant pas le PC au bon endroit.
Je commencerai à chercher de ce coté là.