guilc Le 14/12/2002 à 20:45 Je voudrais etre sur d'une chose : c'est pas très clair dans la doc de TIGCC :
Quand j'alloue de la mémoire avec un malloc (ou HeapAllocPtr), est-elle allouée sur la pile (c'est ce que je comprends de la doc...) ?
Si c'est bien le cas, peut-on allouer de la mémoire hors de la pile, donc en RAM, sans créer de fichier bien sur ?
Poste ton code, p-ê que Kevin ou qq1 d'autre pourra t'éclairer
Link Le 15/12/2002 à 12:36 Les routiones d'allocation allouent sur une zone appelée le tas... "heap" en anglais...

Maintenant j'ai la flemme de garder une signature à jour sur ce site. Je n'ai même plus ma chaîne Exec sous la main.
j'ai pas encore regardé ton code mais:
si tu fais des petites allocations, utilise alloca.
sinon, tu ne peux pas passer par un fichier externe (c'est tres barbare ... mais rien que sur les chaines de caractères ca peut être interessant)
guilc Le 15/12/2002 à 22:59 Non, pour l'affichage, j'ai repris la fonction de tthedit, c'est pour ça que j'ai une assez grosse zone memoire a allouer au début, il faut stocker les sprites de tous les caractères...
Niveau rapidité, c'est très satisfaisant pour afficher les donnés, mais si je lis direct a partir du fichier, là, ça va ramer, les temps d'acces aux donnés sont plus long...
ah oué ... bah pour palier à cela, n'utilise pas une routine de ce genre mais utilise directement l'adresse de la petite fonte et de la moyenne pour utiliser en suite des routines un peu moins rapides, tu va gagner 5*256+7*256 octets au minima
guilc: la dernière version des routines de font n'utilise plus de backbuffer, elle utilise directement les fonts, sur AMS 1.xx comme sur 2.xx.
Je peux te l'envoyer. De quelles polices as-tu besoin (F_4x6, F_6x8, F_8x10), et de quel type de routines d'affichage (A_NORMAL, A_XOR, A_REVERSE, A_REPLACE sont disponibles) ?
Pour l'instant, les routines de dessin sont toujours en C pour la plupart. Les versions ASM sont commencées, mais elles ne sont pas prêtes.
Et j'ai réécrit des routines de sprite d'ExtGraph. Le gain est de 30% sur les Sprite32_OR/XOR/AND, de 20% sur les Sprite8_OR/XOR (bench classique avec une double boucle, dessin sur chaque ligne, puis chaque colonne). Il faut que je fasse rapidement les Sprite8_AND et Sprite16_OR/XOR/AND.
20%, ce n'est pas trop mal, elles sont toujours en C, ou bien tu es un peu passé par l'asm ?
Au fait, la limite que tu rencontres est probablement le nombre maximal de handles (2000).
guilc Le 17/12/2002 à 20:37 Ah !!! c'est vrai ! j'y avais pas pensé a celle la !
Je vais tester ça... PArceque ça m'étonne que ma structure prenne les 137ko de RAM qu'il me reste après l'allocation initiale des buffers + menu...
2000 handles max, mais un bon nombre sont déjà utilisé par le système.... plus un handle par variable...
ce qui signifie que, en pratique, il n'y a pas plus de 1700 handles libres, il me semble, non ?
(et encore, sur une calc moyennement remplie)
(il me semble que ct dans ces eaux là qd j'ai regardé voila bien longtemps)
Tu utilises combien de handles au total ?
Je ne comprends pas ce que tu veux dire quand tu dis que tu mets des choses en statique ou en dynamique.
guilc Le 17/12/2002 à 21:14 statique ou dynamique : changement du type de "tiers" dans la structure du post #20...
Je sais pas combien j'ai de handle au total, j'ai pas encore trouvé la fonction qui le donne dans la doc de TIGCC (fo peut-être la progammer)...
Mais certainement beaucoup, vu la complexité du truc. Je suis en train de chercher encore des détails dans cette direction...
Le nombre de handles que tu utilises = le nombre de fois où tu alloues de la mémoire (malloc, calloc, HeapAlloc, HeapAllocPtr, HeapAllocHigh, HeapAllocHighPtr, ...)
guilc Le 17/12/2002 à 21:22 ben aparement, vu ce qu'a dis squale, il y a en plus un handle par variable dans le prog...
Donc ça fait beaucoup.
Si ne je compte que les allocations, dans la version dynamique, il y en a 3 + nb d'opérations + une boite de dialogue de temps en temps... Ce qui fait dans le fichier qui plante : 154 au max... donc c'est pas trop
Mais avec toutes les variables, alors c'est énorme
ça fait un handle par variable TIOS ! Pas par variable dans ta source C !