30

Folco : En relatif il n'y a non seulement aucun relogement, mais il n'y a pas non-plus d'espace occupé en RAM, grâce à PedROM wink
avatar
Un site complet sur lequel vous trouverez des programmes et des jeux pour votre calculatrice TI 89 / Titanium / 92+ / Voyage 200 : www.ti-fr.com.
Quelques idées personnelles ici.

31

32

Ce dont tu peux être sûr, c'est qu'une exception sera déclenchée, donc en fait, si c'est tout ce dont tu as besoin, ça peut être suffisant. En revanche, à ma connaissance, la valeur exacte de %pc à laquelle l'exception est déclenchée, qui est la valeur que tu vas te retrouver sur la pile, n'est pas spécifiée. Le CPU pourrait aussi exécuter des instructions avant que l'erreur soit détectée, donc pour être sûr, tu peux rajouter des nop après l'instruction qui peut déclencher l'Address Error (mais il me semble que ce ne soit pas le cas...). Et histoire que tu sois averti, tu pourrais aussi trouver l'un ou l'autre bogue de TiEmu dans ce domaine, il me semble que TiEmu réagisse un peu bizarrement aux Address Error actuellement (mais ça, ça peut se corriger, c'est si le matériel ne répond pas comme tu l'attends que tu as un vrai problème). (Et évidemment VTI réagit bizarrement aussi, comme dans toutes les situations peu courantes, donc pas la peine de venir troller "VTI est mieux".)
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

34

Ca serait probablement plus rapide de faire sans exceptions: émuler les lectures non alignées en utilisant Address Error (en admettant que ça fonctionne, comme indique Kevin) est assez lent. Le déclenchement d'Address Error prend quelques dizaines de clocks, auxquels il faut ajouter le coût du RTE.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

35

Folco (./28) :
J'ai pensé à un truc, je vais peut-être lire un longword comme un bourrin, et intercepter l'adress error pour lire byte+word+byte au cas où ^^

Sachant que ça va être aligné que dans 50% des cas, ça va pas être rentable du tout... Il faut mieux se débrouiller pour que tes deux chaînes soient toujours alignées.
Je compte bien faire ça, mais de la manière suivante (et c'est déjà fait) : un octet pour l'offset de la lettre "du milieu", puis un autre octet pour l'écart jusqu'à la lettre la plus loin. Puis recherche binaire.

Pas sûr que tu économises tant que ça (log(n) est pas tellement plus gros que log(n/constante)), surtout que pour gérer le cas où plusieurs instructions ont les mêmes 2 premières lettres il faut plus ou moins que tu fasses deux dichotomies, une pour la borne inférieure et une pour la borne supérieure.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

36

37

Je veux dire en recopiant le nom dans un buffer temporaire, pas en imposant une contrainte sur le source triso de toute façon si tu tombes sur un label au lieu de tomber sur une instruction peut-être que tu crées une chaîne pour le stocker ?

Enfin j'ai aussi l'impression que c'est un peu prématuré comme optimisation, on ne sait pas trop quel format d'entrée tu as, ni si tu dois gérer le cas où ce n'est pas une instruction plus vite que le cas où c'en est une, ni si c'est vraiment *le* truc à optimiser ou si il faut juste faire un peu mieux qu'une recherche linéaire, etc...

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

38

39

(avec lag)

je suis pas sur que t'aies besoin d'un index pour les 2eme lettres. La recherche dicho est très rapide, si tu doubles le nb d'entrées t'as juste besoin d'une itération supplémentaire (c'est ça que ça veut dire, complexité en log(nb d'entrées) tongue )

40

Folco (./38) :
Pollux (./37) :
ou si il faut juste faire un peu mieux qu'une recherche linéaire
C'est ça, mais j'ai pas envie d'y revenir forcément, donc sans taper sans le state of the art, je veux faire un truc correct, du moins qui me plombe pas.

Alors le plus simple c'est pas de faire des tables compliquées, de traiter les deux premiers caractères spécialement, etc : tu fais juste une dichotomie, qui utilise une comparaison de chaîne toute simple. Et si tu recopies la chaîne dans un buffer aligné tu peux même faire une comparaison avec des word/long plutôt que de la faire octet par octet.
sauf si tu n'écris qu'en macro, je pense que les instructions ont la priorité, non ?

Ah oui ok j'oubliais qu'a68k regarde si c'est en début de ligne ou pas pour savoir si c'est un label.

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

41

Pollux (./40) :
Ah oui ok j'oubliais qu'a68k regarde si c'est en début de ligne ou pas pour savoir si c'est un label.

sick

J'ai toujours détesté ça (même quand j'utilisais encore A68k), GNU as est tellement plus pratique!
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é

42

43

Kevin> zzz et on peut aussi détester mettre des ":" à la fin de chaque label zzz (mais je crois que c'est pas le topic et que Martial est déjà au courant de tes opinions là-dessus donc tu aurais pu t'en passer)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)