1

Je veux créer des pointeurs à l'intérieur d'une LISTE de LISTE ( pas de contrainte de dimension ).
Pour faire simple on va dire un DATA même si cela est réducteur.

Pour ce faire, je me dit qu'il me faut :
Solution 1

gérer une VAT comportant moins d'entrées que celle du TiOS en espérant être plus rapide
à partir d'une structure
[PRE]
struct VAT {
char *ptrname;// nom pointeur
HANDLE handlevar;//handle variable pointée dans la VAT
HANDLE handleptr;//handle de la structure EXPR allouée dynamiquement
EXPR *ptr;// pointeur sur structure référençant une EXPR ( inclu le DATA )
};
[/PRE]



Solution2

elle consiste à utiliser la VAT du TiOS pour y ajouter une variable perso de type PTR de 12 bytes
[PRE]
: 2 bytes taille
: 2 bytes handle variable TiOS
: 2 bytes handle structure EXPR
: 6 bytes { 0, 'P', 'T', 'R', 0, OTH_TAG }
[/PRE]


en (1) c'est moi qui fait la recherche. En (2) c'est le TioS qui s'y colle.
En toute logique ma table étant plus petite mon code devrait être plus rapide non ?

A votre avis un code C utilisant la solution 1 peut-il être ou sera t-il plus rapide que les routines ASM du TiOS de recherche dans la VAT.

tout ce qui m'intéresse c'est la vitesse. je veux vraiement donner l'impression qu'on utilise des pointeurs en Ti-Basic. Alors je voudrais être rassuré avant de me jetter dans le codage demain.

Merci

2

Il me semble que tout l'ams est codé en C donc si tu te démerde bien avec la solution 1 tu seras forcément plus rapide que le tios vala
...

3

4

En effet, mais je ne sais pas si réinventer la roue pour ça est une bonne idée.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

5

Enfin si tu refais une roues rondes à la place d'une roue carrée, c'est peut-être toujours mieux tongue
...

6

si tu rajoutes des entrées dans la vat, tu les rajoutes dans quel répertoire ? ça pourrait prendre du temps si la vat comporte de nombreuses entrées
et faire une fonction de recherche dans la vat, ça ne prend pas énornément de place
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

7

C'est pas terrible de réinventer la roue, surtout pour essayer d'accelerer le Basic.
Ce qui me fait le plus chier, c'est d'écrire des routines ultra rapides pour gérer les variables du Ti-Basic alors que y a pas moyen de hacker le déroulement d'un programme Ti-Basic, pour y inclure de nouvelles les structures de contrôle tel que :
- Goto Label
- For Next


Si quelqu'un avait plus de renseignement, doc sur le sujet ......

8

9

y a peut-être un moyen moche : faut faire en sorte que les Goto Label fassent une erreur à l'exécution, que tu récupères en détournant le trap qui va bien (me souviens plus duquel)
mais je sais pas comment faire pour qu'il y ait une erreur à l'exécution (tokens inexistant ?)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

10

FLANKER :
C'est sure j'y connait que dalle en ASM, alors si tu veux m'aider sur ce coup , ça serait bien pour le Ti-Basic.

MARTIAL:
je disais ça comme ça; je vais qu'à même implémenter une autre VAT pour gérer mes pointeurs.
Au moins ça sera déjà fait pour le jour où on trouvera le moyen de hacker les Label Goto et autres

11

FLANKER :
On peut utiliser des indirections avec Goto, donc y a moyen de provoquer l'erreur dont tu parles.

"a1"->a
goto #"a"
.
.
.
Lbl a1

12

Après faut encore chopper l'interruption et pouvoir l'utiliser correctement...
...

13

14

nan, ça c'est pas dur, suffit de trouver le bon trap (Line 1010 Emulator de mémoire)
après, faut savoir comment à partir de là retomber sur l'endroit du programme basic où on est
ce we je pourrais peut-être faire qqes essais si tu veux (si jamaiss j'ai un assembleur sur ma v200, ce qui n'est pas sûr - et flemme de vérifier, elle est trop loin de moi - au moins 10cm)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

15

Martial Demolins :
c'est surtout qu'il est codé avec les pieds ^^

Certes, mais ca marche plutot bien !
Comme dit lionel, c'est pas forcement utile de tout refaire... surtout quand on a deja le matos qui roule roll

16

En effet.
filelib est une réinvention de la roue. Une des fonctions, dont je ne sais plus le nom, est (à l'ordre des valeurs près) GetDataType, qui est disponible sur AMS 1.xx aussi, bien qu'il faille utiliser un hack (sûr, puisque ces versions n'évoluent plus):
#define GetDataType(tagptr) \
((!AMS_1xx)?((short(__ATTR_TIOS__*)(ESI))(_rom_call_addr(435)))(tagptr) \
sad(short(__ATTR_TIOS__*)(ESI))(*(unsigned long *)((unsigned char *)_rom_call_addr(319)+134)))(tagptr))
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

17

C'est beau, c'est propre. C'est facile a debugguer triso

18

je me demande si ça va vraiement être faisable.
On peut provoquer une erreur pour un goto uniquement, pas pour un Label.


Et moi ce que j'avais en tête au départ c'était de trouver le moyen connaître comment forcer un programme basic à de positionner sur une ligne quelconque dans le code (je suis sure que le TiOS doit garder des traces quelque part ); en ajoutant des fonctions qui permettraient de redéfinir la position du pointeur dans le code.

19

tu peux pas parcourir le fichier tokénisé pour y mettre toi-même des erreurs ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

20

c'est faisable.
mais je mets quoi comme erreur ?

21

ça j'en sais rien ^^
essaie de corrompre un fichier correctement tokenisé, ou tout simplement regarde comment est fait un programme assembleur pour 92simple
(et éventuellement le code source de fargo si c'est pas trop gros)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

22

je connais deja le format des programmes basics ca devrait pas poser de problemes

23

un token inconnu devrait suffir
et peut-être que tu peux mettre l'offset vers le Label correspondant juste après le goto (ou créer une table de correspondance)
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant