40Fermer42
squalylLe 11/05/2009 à 13:50
l'info qui manque:

le code de ces fonctions est dans la ROM de la calcu. Mais la ROM n'est PAS UN OS au sens ou l'OS ne fonctionne pas en espace superviseur et les programmes en espace utilisateur, etc, enfin pas strictement.

En tout cas les fonctions "symfindfirst" et ksétéra sont des routines stockées en ROM, identifiées par un numéro:

on lit le long à 0xc8, le contenu est l'adresse de la table des appels.
a partir de ce pointeur, on a une liste de long qui sont des pointeurs vers les routines.

exemple:
http://tigcc-linux.cvs.sourceforge.net/viewvc/tigcc-linux/tigcc/include/C/vat.h?revision=1.5&view=markup

#define SymFindFirst _rom_call(SYM_ENTRY*,(SYM_STR,short),6C)

symfindfirst est le rom call 0x6c, dont l'adresse dans la ROM est stockée à l'entrée 0x6c (=108) de la jumptable de cette ROM.
quand tu l'appelles, c'est juste un appel à cette adresse de la ROM.

la ROM est juste un ensemble de librairies. rien n'est prévu pour la patcher, ajouter des hooks, etc