30

Thibaut: > Je crois qu'il y a un ROM_CALL pour obtenir l'adresse de la table des handles.
Vrai sous AMS 2.xx ("HeapTable", ROM_CALL 441), mais ça n'existe pas sous AMS 1.xx.
tthdex contient le source d'une méthode marchant sur toutes les versions d'AMS:
//-------------------------------------------------------------------------
// get the handle table (thanks to Zeljko Juric for this trick !)
//-------------------------------------------------------------------------
handle_table = *(unsigned long**)(unsigned long)(*((HANDLE*)HeapDeref+4+AMS_2xx));
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

31

Kevin > Je t'ai envoyé un mail à l'adresse du forum smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

32

J'ai regardé ça encore une fois, et je n'ai pas pu reproduire le problème parce qu'il me manque le bon fichier versatil pour le reproduire, mais je pense connaître la cause. Le problème est que chaque entrée de la table de relogements est une paire de mots (shorts), et qu'on n'a atteint la fin de la table que si le premier mot de la paire en partant de la fin du fichier est nul. Sinon, pour des programmes qui accèdent à l'octet 0 (et c'est le cas si tu utilises tigcc_compiled. dans le programme que tu veux redimensionner), il y a un problème.

Correction proposée:
// Cherche le mot nul (pas while(*--p || *--p) à cause de l'évaluation paresseuse)
 while(*(p--) || *p) [b]p-=3;[/b]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

33

Je viens de tester la correction et elle marche. En redimensionnant le programme suivant:
// C Source File
// Created 03.11.2002; 03:38:06

#define USE_TI89              // Compile for TI-89
#define USE_TI92PLUS          // Compile for TI-92 Plus
#define USE_V200              // Compile for V200

// #define OPTIMIZE_ROM_CALLS // Use ROM Call Optimization

#define MIN_AMS 100           // Compile for AMS 1.00 or higher

#define SAVE_SCREEN           // Save/Restore LCD Contents

#include <tigcclib.h>         // Include All Header Files

// Main Function
void _main(void)
{
extern void program_start_label asm("tigcc_compiled.") // n'oublie pas le point! 
void *program_start=&program_start_label; 
void *program_start_noghost=(void *)((unsigned long)program_start&0x3ffff);
clrscr();
printf("%lp",program_start_noghost);
ngetchx();
}

avec le code d'origine (while(*(p--) || *p) p--;), j'ai un "Invalid relocation data in ASM program" dès le premier redimensionnement (VTI-89 AMS 2.08). Avec le changement proposé (while(*(p--) || *p) p-=3;), même après 1000 redimensionnements (For i,1,100:versmake():EndFor), le programme redimensionné reste valide.
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

34

Ben... J'ai essayé avec divers programmes ASM, et ça n'a marché pour aucun sad
Au bout d'une dizaine de redimentions j'obtient des erreurs variées, dont certaines assez inattendues :

"Attribute 0x8 of object 0xFF000021 not found"

smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

35

Chez moi, ça marche... confus
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

36

Etrange... Je vais ré-ré-essayer
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

37

Je n'y comprends plus rien... Voilà qu'au bout de la 3eme compilation sans rien modifier, ça marche grin

Enfin le principal y est, merci smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)