IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Boucle folle : For avec décalage de bit


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut Boucle folle : For avec décalage de bit
    Bonjour,

    Bon je me décide à demander de l'aide auprès de la communauté car je suis confronté à un problème dont je ne voit pas la dénouement

    Je suis entrain de coder un interpréteur de chip-8 en C sous linux (gcc).
    Dans mon kernel, j'interprete donc les opcode et j'ai fait ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    inline void kernel(unsigned char *memoire, 
                       unsigned char *registre,
                       unsigned short *PC,
                       SDL_Surface* memoire_video,
                       unsigned char *SP,
                       unsigned short *stack,
                       unsigned int *I,
                       unsigned char *etat_touches,
                       unsigned char *delay,
                       unsigned char *sound)
    {
       #define x      (opcode&0xF00)>>8
       #define y      (opcode&0xF0)>>4
       #define nnn    (opcode&0xFFF)
       #define kk     (opcode&0xFF)
       #define n      (opcode&0xF)
       #define Vx     *(registre+x)
       #define Vy     *(registre+(y))
       #define Vf     *(registre+0xF)
     
      [....]
     
     case 0x65: 
               printf("memoire : %#X, *I= %#X , i = %#X, Vx = %#X\n",memoire,*I,i,Vx);
               for(i=0; i<(unsigned char)(Vx); i++) { printf("i=%#X\n",i); *(registre+i) = *(memoire+*I+i);} 
               #ifdef __DEBUGGER__
                 printf("De I dans V0 à V%i\n",x);
               #endif
               break;
           }
    Lorsqu'il interprete l'opcode 0xF065, là ca devient vraiment bizarre. Normalement il devrait regarder ce qu'il y a dans le registre V0, ici il vaut 0x40 et boucler donc 0x40 fois...
    Or lors du debug avec le premier printf j'ai les bonnes valeurs... Lors du printf dans la boucle, celle ci s'emballe et ne s'arrete qu'a 0xA7 !!
    J'avoue que je ne comprend pas.

    Quelqu'un a t'il une piste? ??

  2. #2
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Tu écrases certainement la valeur de Vx avec ceci *(registre+i) = *(memoire+*I+i);.

    Très bon projet, bonne chance.

  3. #3
    Futur Membre du Club
    Inscrit en
    Septembre 2010
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 4
    Par défaut
    Mais bien sûr !!!

    Rahlala quand on a la tête dans le guidon ...
    Merci beaucoup pour ton éclairage !

    Je m'en vais continuer mon petit projet !!!


Discussions similaires

  1. Boucle for avec saut
    Par michel71 dans le forum Delphi
    Réponses: 3
    Dernier message: 25/02/2007, 17h16
  2. boucle for avec condition
    Par Daniel Magron dans le forum Delphi
    Réponses: 4
    Dernier message: 22/01/2007, 17h18
  3. Réponses: 2
    Dernier message: 28/08/2006, 19h17
  4. [VB6] boucle for avec liste de valeur defini
    Par Morpheus2144 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 06/04/2006, 19h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo