Accueil Ti-Gen Foire Aux Questions Chat sur le chan #tigcc sur IRC
Liste des membres Rechercher Aide
Bienvenue Invité !   Se connecter             Mes sujets   
Administrer
0 membre(s) et 1 visiteur(s) actif(s) durant les 5 dernières minutes Utilisateurs actifs : Aucun membre + 1 visiteur
Avant de poster sur le forum, il y a des régles de bases à respecter pour une bonne entente et un respect de tous.
Veuillez lire la charte du forum.
  :: Index » Forum Ti68K » Programmation C » Illegal instruction (9 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Invité Ecrit le: Mercredi 22 décembre 2004 à 12:01 Déconnecté(e)    
 
Lorsque j'exécute
void _main(void)
{
unsigned short map[17][10] = {{}};
for (xm=0; ym<18; xm++)
{
for (ym=0; xm<11; ym++)
{
map[xm][ym] = random(2);
//printf_xy(0, 0, "%d,%d", xm, ym);
}
}
}

j'ai Illegal Instruction à tous les coups. J'ai essayé des variantes mais ça n'arrange rien. Comment faire pour que ça fonctionne correctement ?
    
./Post n°1   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 22 décembre 2004 à 12:04 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Le mélange de xm et ym dans les for est curieux. Peut-être que c'est ce que tu veux faire, mais ça me paraît bizarre.
Et en C, un tableau de 17 va de 0 à 16, pas de 0 à 17 ou 1 à 17. Décrémente les valeurs maximales (18 -> 17, 11 -> 10).
Lionel Debroux - membre de TICT.
    
./Post n°2   Marquer comme non lu.
Invité Ecrit le: Mercredi 22 décembre 2004 à 12:27 Déconnecté(e)    
 
Ca me fait aussi Illegal Instruction.
Maintenant j'ai ça :
void _main(void)
{
clrscr();
unsigned short x1 = 110;
unsigned short x2 = 130;
unsigned short x = x1/2+x2/2;
unsigned short y = 99;
char *varx = "x-1";
char *vary = "y-1";

unsigned short map[17][10] = {{}};
unsigned short xm = 0;
unsigned short ym = 0;

for (xm=0; ym<17; xm++)
{
for (ym=0; xm<10; ym++)
{
map[xm][ym] = random(2);
//printf_xy(0, 0, "%d,%d", xm, ym);
}
}
}
    
./Post n°3   Marquer comme non lu.
limmt Ecrit le: Mercredi 22 décembre 2004 à 13:21 Déconnecté(e)    Voir le profil de limmt Envoyer un email à limmt Visiter le site WEB de limmt Envoyer un message privé à limmt  


for (xm=0; ym<17; xm++)
{
for (ym=0; xm<10; ym++)

tu est vraiment sur que tu veut tester xm en incrémentant ym et vice versa??
http://www.falco-fr.com/ - http://www.jump67.com/ - http://www.msf-league.com/
    
./Post n°4   Marquer comme non lu.
Jfg Ecrit le: Mercredi 22 décembre 2004 à 13:38 Déconnecté(e)    Voir le profil de Jfg Envoyer un email à Jfg Visiter le site WEB de Jfg Envoyer un message privé à Jfg  


Et puis souvent c'est un peu plus efficace de mettre
for (i=n;i--; ) {}
à la place de
for (i=0;i<n;i++) {}
Kill Mario
    
./Post n°5   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 22 décembre 2004 à 14:25 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

#3: en effet. Illegal Instruction est typique d'exécution de données, et dans ce cas là, le problème vient certainement d'écritures en-dehors des limites du tableau.
#4: en effet, mais il faut faire attention à la valeur exacte de n.
Lionel Debroux - membre de TICT.
    
./Post n°6   Marquer comme non lu.
Invité Ecrit le: Mercredi 22 décembre 2004 à 19:49 Déconnecté(e)    
 
Non je me suis trompé mais mes modifications ne changent rien.
En fait je veux remplir une matrice de 17x10. Chaque cellule doit contenir un chiffre entre 0 et 1. Rien à faire, ma dernière erreur est une demi-barre noire en haut, sans texte...
    
./Post n°7   Marquer comme non lu.
LionelA Ecrit le: Mercredi 22 décembre 2004 à 23:15 Déconnecté(e)    Voir le profil de LionelA Envoyer un email à LionelA Visiter le site WEB de LionelA Envoyer un message privé à LionelA  


void _main(void){
/* on declare les variables avant les instructions */
  unsigned short xm;
  unsigned short ym;
  unsigned short map[17][10]; /* pas la peine d'initialiser avec un tableau vide (le pb devait venir de la)*/

/* les instructions */
  clrscr();

  for (xm=0; xm<17; xm++)
    for (ym=0; ym<10; ym++){
      map[xm][ym] = random(2);
      printf_xy(0, 0, "%d,%d", xm, ym);
    }

}


Voilà, j'ai pas testé mais y'a pas de raison que ca marche pas :)
-Edité le Mercredi 22 décembre 2004 à 23:16 par LionelA-
Auteur de Mode7 Engine pour ti68k
Auteur de F-ZERO for TI68k
Membre de Orage Studio
Mon site perso : http://www.tigen.org/lionela/
Le gite de mes parents à coté de Narbonne :
http://chaletdenis.free.fr/
    
./Post n°8   Marquer comme non lu.
Lionel Debroux Ecrit le: Vendredi 24 décembre 2004 à 10:38 Déconnecté(e)    Voir le profil de Lionel Debroux Envoyer un email à Lionel Debroux Visiter le site WEB de Lionel Debroux Envoyer un message privé à Lionel Debroux  

Pour faire ce que tu veux, dans ce cas particulier (remplir une map), il y a plus simple:
rajouter une variable pointeur "ptr", initialisée à map, et faire une boucle unique, exécutée le nombre convenable de fois, contenant *ptr++ = random(2).
Ce truc est assez classique pour optimiser les accès aux tableaux, surtout sur le 68000 qui a un mode ea postincrémenté directement accessible.
Lionel Debroux - membre de TICT.
    
./Post n°9   Marquer comme non lu.
Invité Ecrit le: Vendredi 24 décembre 2004 à 15:34 Déconnecté(e)    
 
Ok je vais voir.
    
  :: Index » Forum Ti68K » Programmation C » Illegal instruction (9 réponse(s))
Pages : 1/1     « [1] » »|

.Répondre à ce sujet
Les boutons de code
[B]old[I]talic[U]nderline[S]trikethrough[L]ine Flip Hori[Z]ontallyFlip [V]erticallySha[D]ow[G]low[S]poilerCode [G][C]ite
Bullet [L]istList Item [K] Link [H][E]mail[P]icture SmileysHelp
Couleurs :
Saisissez votre message
Activer les smileys
     

Forum de Ti-Gen v3.0 Copyright ©2004 by Geoffrey ANNEHEIM
Webmaster: Kevin KOFLER, Content Admins: list, Server Admins: Tyler CASSIDY and Kevin KOFLER, DNS Admin: squalyl
Page générée en 82.81ms avec 22 requetes