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 » J'aimerai vraiment m'améliorer... (139 réponse(s))
./REPRISE DU POST PRECEDENT (post n°133)   Marquer comme non lu.
Sasume Ecrit le: Mercredi 19 avril 2006 à 14:19 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

C'est d'ailleurs bizarre, puisqu'une chaine de caractères est un char *
-Edité le Mercredi 19 avril 2006 à 14:19 par Sasume-
    
./Post n°134   Marquer comme non lu.
geogeo Ecrit le: Mercredi 19 avril 2006 à 14:40 Déconnecté(e)    Voir le profil de geogeo Envoyer un email à geogeo Visiter le site WEB de geogeo Envoyer un message privé à geogeo  


char * est tout simplement un héritage lorsque à l'époque le code ASCII ne contenait que 128 caractères.
Et int peut être parce que c'est le type le plus utilisé et la convention du C veut que tout entier soit du type int que ça soit en entrée ou sortie d'une fonction.
On le constate avec strlen par exemple ou la logique voudrait que ça soit du type unsigned, c'est pareil avec beaucoup d'autres fonctions de la bibliothèque standard.
Ensuite peut être y a t-il une histoire d'optimisation (éviter au max les transtypages).
Ce ne sont que des suppositions. ^^
Webmaster du site.
Programmeur sur TI68K. Arkanoid, Nebulus, GFA-Basic.

Plus d'informations sur GFA-Basic (un langage Basic pour TI68K).
http://www.tigen.org/gfabasic
    
./Post n°135   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 20 avril 2006 à 06:17 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  


Martial Demolins :
Kevin Kofler :
Il parle de son gros hack de caching qui ne peut pas fonctionner en pratique sans modifier AMS (il ne peut pas intercepter les allocations effectuées à l'intérieur de AMS).

et non, ça marche très bien. je fournis les fonctions d'accès qui vont bien (allocation en mémoire haute ou basse et réallocation. de plus, adresse et handle sont renvoyés à chaque fois, ça gagne en place au final.
pour les autres fonctions de alloc.h, il n'y a aucun problème à les utiliser normalement.

Je ne parle pas des appels directs à alloc.h, mais des appels aux fonctions de alloc.h effectuées par d'autres fonctions de AMS!
Il y a 54 fonctions (parmis ROM_CALLs et fonctions de TIGCCLIB) qui appellent HeapAlloc et 59 qui appellent HeapRealloc, et encore, je n'ai pas compté les fonctions qui appellent HeapAllocHigh ou HeapAllocPtr (malloc), les fonctions qui appellent les 54+59 fonctions en question etc. On en est bientôt à 90% de AMS. Je n'ai pas non plus compté les appels non-F-Line à malloc dans les diverses libs kernel. Il y a des allocations partout, qui sont effectuées par des appels directs à l'adresse absolue du ROM_CALL, donc il est impossible d'intercepter les allocations sans écrire le code d'interception à cette adresse, c'est-à-dire modifier la FlashROM système.

et je ne vois pas où est le hack, c'est parfaitement propre, ça utilise un Line emulator non utilisé par AMS ou par aucun autre programme.

Cf. ci-dessus. Ta "solution" est un hack parce qu'elle ne marche pas toujours (j'ose même dire qu'elle ne marche dans aucun programme autre que le Hello World avec lequel tu l'as testée). Elle est en tout cas parfaitement inutilisable dans mes programmes parce que je n'en vois a priori pas un seul qui n'appelle pas une fonction appelant malloc ou HeapAlloc directement quelque part.

Sasume :
D'ailleurs, c'est un peu moche parce que ma fonction drawchar prend en paramètre un unsigned char, tandis que les chaines de caractères sont des char * (pas unsigned donc).
Kevin ?

C'est le standard C qui veut ça...
Si tu veux que char soit non-signé (contrairement à tous les autres types d'entiers), tu peux avoir ça: -funsigned-char. Mais la bonne solution est de transtyper en unsigned char.

geogeo :
drawchar(x, y, (unsigned)*chaine++);

Solution incorrecte, là, tu transtypes en unsigned int (implicit int), pas unsigned char.
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°136   Marquer comme non lu.
Sasume Ecrit le: Jeudi 20 avril 2006 à 10:52 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Dans la conversion char -> unsigned char, que se passe-t-il exactement si le nombre était négatif ?
    
./Post n°137   Marquer comme non lu.
Kevin Kofler Ecrit le: Jeudi 20 avril 2006 à 18:24 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  


Il est pris modulo 256.
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°138   Marquer comme non lu.
Kroma Ecrit le: Samedi 22 avril 2006 à 07:41 Déconnecté(e)    Voir le profil de Kroma Envoyer un email à Kroma Visiter le site WEB de Kroma Envoyer un message privé à Kroma  

Bon, c'est décidé, je vais m'acheter un bouquin...
Vous me conseillez quoi ???
#idea# SHIP TOURNAMENT 2006 -> 5% #idea#
    
./Post n°139   Marquer comme non lu.
Sasume Ecrit le: Samedi 22 avril 2006 à 11:30 Déconnecté(e)    Voir le profil de Sasume Envoyer un email à Sasume Visiter le site WEB de Sasume Envoyer un message privé à Sasume  

Moi j'aime bien Claude Delannoy.
J'ai débuté avec un petit bouquin qui n'est pas de lui, puis j'ai acheté peu de temps après un livre de Claude Delannoy bien plus fourni : La référence du C norme ANSI-ISO.
Mais peut-être que pour un premier livre c'est un peu aride. Cependant, je le recommande à tout le monde, car il est vraiment très complet. J'attends avec impatience une nouvelle édition consacrée à la norme C99 (celui-ci décrit la norme C90).
Bref, en me baladant sur amazon, j'ai trouvé ceci : Programmer en langage C : Cours et exercices corrigés, qui semble très bien pour débuter (pas trop gros et pourtant complet).
C'est une très bonne initiative d'investir dans un bouquin pour apprendre. Tu verras, les choses seront plus claires et cela te permettra de progresser rapidement et donc d'évoluer facilement vers ce que tu aimes.
    
  :: Index » Forum Ti68K » Programmation C » J'aimerai vraiment m'améliorer... (139 réponse(s))
Pages : 8/8     « 1 2 3 4 5 6 7 [8] » »|

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