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 » Boucle for (33 réponse(s))
./POST DE DEPART (post n°0)   Marquer comme non lu.
Thor Ecrit le: Mardi 30 mars 2004 à 10:17 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Est il possible de faire un appel à une boucle for du style
for (a=100000-525*choce[1];a>0,a--);?
J'essaie de fire ça comme boucle d'attente mais ça ne change rien :(
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°1   Marquer comme non lu.
Sasume Ecrit le: Mardi 30 mars 2004 à 13:58 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Il me semble que GCC vire carrément ce genre de boucles dans ses passes d'optimisation.

Trouve un autre moyen. Essaie d'utiliser les timers.
    
./Post n°2   Marquer comme non lu.
Thor Ecrit le: Mardi 30 mars 2004 à 16:55 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Ah c'est pour ça que ça marche pas! Et le timer ça va me faire un programme trop lourd je pense. Si je fais:

long wait;
wait=100000-525*choce[1];
while (choice>0) wait--;

est ce que ça fait le même problème?:s
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°3   Marquer comme non lu.
Sasume Ecrit le: Mardi 30 mars 2004 à 18:02 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Ton code ne serait pas retiré par les optimisations de TIGCC, mais ne servirait à rien.

Je pense que si tu déclares ta variable a en volatile, TIGCC ne se permettra pas de virer ton bout de code.
    
./Post n°4   Marquer comme non lu.
Lionel Debroux Ecrit le: Mardi 30 mars 2004 à 19:05 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  

En principe, GCC ne vire pas complètement ce type de boucles, même quand le compteur n'est pas volatile. Mais il les optimise nettement.
Lionel Debroux - membre de TICT.
    
./Post n°5   Marquer comme non lu.
Kevin Kofler Ecrit le: Mardi 30 mars 2004 à 19:27 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Les versions récentes de GCC sont censées virer la boucle entièrement.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°6   Marquer comme non lu.
Thor Ecrit le: Mercredi 31 mars 2004 à 13:19 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Je n'ai qu'a déclarer en volatile logiquement le compilateur n'y touchera pas alors
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°7   Marquer comme non lu.
Vertyos Ecrit le: Mercredi 31 mars 2004 à 19:08 Déconnecté(e)    Voir le profil de Vertyos Envoyer un email à Vertyos Visiter le site WEB de Vertyos Envoyer un message privé à Vertyos  

Oui. Mais tant qu'à faire tu devrais utiliser une "vraie" routine de pause, qui soit plus précise. Soit "WaitForMillis" dispo dans les sources de Ti-Chess, soit utiliser une interruption (la 1 par exemple, elle est suffisement précise).
Membre de [ yAronet ] ^^
(et de [ 3l33t ] aussi, mais chut, coté obscur toussa...)
    
./Post n°8   Marquer comme non lu.
Lionel Debroux Ecrit le: Mercredi 31 mars 2004 à 19:12 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  

> Oui. Mais tant qu'à faire tu devrais utiliser une "vraie" routine de pause, qui soit plus précise. Soit "WaitForMillis" dispo dans les sources de Ti-Chess, soit utiliser une interruption (la 1 par exemple, elle est suffisement précise).
C'est habituellement ce qu'on fait, mais il faut savoir qu'aucune des deux solutions n'est parfaitement satisfaisante:
* les HW1 et HW2 ont des vitesses de processeur différentes et variant selon les machines.
* l'AI1 n'est justement pas précise, les taux sont sensiblement différents sur HW1 (350 - 395 Hz) et HW2 (256 Hz).
Lionel Debroux - membre de TICT.
    
./Post n°9   Marquer comme non lu.
Vertyos Ecrit le: Mercredi 31 mars 2004 à 19:31 Déconnecté(e)    Voir le profil de Vertyos Envoyer un email à Vertyos Visiter le site WEB de Vertyos Envoyer un message privé à Vertyos  

-----
* l'AI1 n'est justement pas précise, les taux sont sensiblement différents sur HW1 (350 - 395 Hz) et HW2 (256 Hz).
-----
350 et 256 en effet, d'ou l'interet de détecter si on est sur HW1 ou 2, et d'adapter les temps en fonction. C'est ce que je fais toujours et ça marche impecablement bien.
Membre de [ yAronet ] ^^
(et de [ 3l33t ] aussi, mais chut, coté obscur toussa...)
    
./Post n°10   Marquer comme non lu.
Thor Ecrit le: Jeudi 1er avril 2004 à 14:50 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Oui mais le problème d'utiliser un AI c'est que ça va grossir mon prog et encore plus si il faut que je détecte le HW :( j'en suis déja à 6000 et je veux pas dépasser 8000
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°11   Marquer comme non lu.
Lionel Debroux Ecrit le: Jeudi 1er avril 2004 à 19:10 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  

Ca ne coûte pas si cher que ça, d'utiliser des interruptions et de détecter le hardware.. Mais si tu n'as pas besoin de précision, utilise une wasting loop en ASM, c'est plus simple.
Mes posts précédents étaient pour dire que techniquement, il n'y a aucune solution parfaite pour ralentir un programme.
Lionel Debroux - membre de TICT.
    
./Post n°12   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 1er avril 2004 à 22:36 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Pour détecter le matériel, tu prends HW_VERSION et TIGCC te mettra une fonction d'une centaine d'octets maximum.
Et pour la taille, si c'est pour éviter le lanceur sur AMS 2.00-2.03, tu peux aller jusqu'à 8192 octets, pas la peine de t'arrêter à 8000. :)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°13   Marquer comme non lu.
Vertyos Ecrit le: Jeudi 1er avril 2004 à 23:16 Déconnecté(e)    Voir le profil de Vertyos Envoyer un email à Vertyos Visiter le site WEB de Vertyos Envoyer un message privé à Vertyos  

Au passage si tu utilise les niveaux de gris, tu n'as même pas besoin de detecter toi même le HW, la routine de tigcc le fait déjà.
Membre de [ yAronet ] ^^
(et de [ 3l33t ] aussi, mais chut, coté obscur toussa...)
    
./Post n°14   Marquer comme non lu.
Kevin Kofler Ecrit le: Vendredi 2 avril 2004 à 00:46 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Oui. _GrayIsRealHW2(). :)
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°15   Marquer comme non lu.
Thor Ecrit le: Vendredi 2 avril 2004 à 10:19 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Non c'est en black and white
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°16   Marquer comme non lu.
Thor Ecrit le: Jeudi 8 avril 2004 à 16:49 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


<<Pour détecter le matériel, tu prends HW_VERSION et TIGCC te mettra une fonction d'une centaine d'octets maximum.
Et pour la taille, si c'est pour éviter le lanceur sur AMS 2.00-2.03, tu peux aller jusqu'à 8192 octets, pas la peine de t'arrêter à 8000.
>>
Euh Kevin ça c'est une pseudo constante TIGCC? et ça me retourne le HW c'est à dire 1 ou 2? C'est quel AI qui est le USER_TIMER car moi je "supprime" les AI1 et 5 pour utiliser _rowread
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
./Post n°17   Marquer comme non lu.
Lionel Debroux Ecrit le: Jeudi 8 avril 2004 à 19:26 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  

Les timers sont sur l'AI5. Et il faut en effet supprimer l'AI1 et l'AI5 pour utiliser _rowread.
Lionel Debroux - membre de TICT.
    
./Post n°18   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 8 avril 2004 à 19:26 Déconnecté(e)    Voir le profil de Kevin Kofler Envoyer un email à Kevin Kofler Visiter le site WEB de Kevin Kofler Envoyer un message privé à Kevin Kofler  


Euh Kevin ça c'est une pseudo constante TIGCC?

Oui.

et ça me retourne le HW c'est à dire 1 ou 2?

Oui.

C'est quel AI qui est le USER_TIMER car moi je "supprime" les AI1 et 5 pour utiliser _rowread

AMS utilise l'AI5, tu peux faire de même.
Membre de l'équipe de TIGCC: http://tigcc.ticalc.org
Mainteneur du portage Linux/Unix de TIGCC: http://tigcc.ticalc.org/linux/
Membre de l'équipe de CalcForge: http://www.calcforge.org:70/

Participez à la reprise de Ti-Gen!
    
./Post n°19   Marquer comme non lu.
Thor Ecrit le: Mardi 13 avril 2004 à 19:57 Déconnecté(e)    Voir le profil de Thor Envoyer un email à Thor Visiter le site WEB de Thor Envoyer un message privé à Thor  


Encore une petite chose le rapport^pour mon attente entre les deux hardware c'est combien ? Y'a t'il 2 hardwares différents de 92+?
Cyril MOTTIER aka {==Thor==}
Modérateur général du forum de Tigen
[Etudiant à l'Institut National des Sciences Appliquées (INSA) de Rennes]
Mon site perso c'est ici
    
  :: Index » Forum Ti68K » Programmation C » Boucle for (33 réponse(s))
Pages : 1/2     « [1] 2 » »|

.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 49.8ms avec 18 requetes