3Fermer5
ZerosquareLe 02/02/2014 à 22:06
Folco (./3) :
Ok, mais à quoi tu t'attends comme résultat ? Si tu as écris ça, tu as voulu dire quoi ? Moi j'en vois pas le sens en tout cas.
Ben lire un mot à l'adresse de _main, donc récupérer l'opcode du bra *, tout simplement smile
Bon, dans l'exemple ça n'est probablement pas très utile (à moins de faire du code automodifiant à l'envers : du code qui se lit lui-même cheeky), mais je ne vois pas où est le souci sur le principe confus
Folco (./3) :
Comment veux-tu obtenir l'adresse sans relogement ? Et le "mot inférieur de l'adresse", je vois bien ce que tu veux dire, mais conceptuellement, ça a un sens ?
Alors je ne sais pas si ça existe sur TI, mais tu as des cas où toutes les adresses sont absolues et connues au moment du linking, voire de l'assemblage, donc y'a aucun relogement. Sur les plateformes embarquées (comme une console de jeu par exemple), c'est très courant que ton code et tes données soit chargés à une adresse fixe. Donc ça ne pose pas de problème d'obtenir le mot inférieur d'une adresse, puisque c'est une constante. Ça peut même être utile si tu as, par exemple, des données qui sont placées dans une zone $xxxx0000 ~ $xxxxFFFF : vu que $xxxx est connu, tu peux faire un tableau de pointeurs qui ne stocke que la partie basse de l'adresse, et qui est du coup deux fois plus petit.

Si tu introduis des relogements là-dedans, ben... ça devient tordu grin À moins que ton système de relogement ne reloge qu'à des multiples de 64 Ko (auquel cas y'a rien à changer), ou qu'il soit capable de faire des relogements sur 2 octets ET ne pas placer tes données à cheval sur un multiple de 64 Ko, ça ne marche pas. Je sais pas comment marchent les relogements sur TI mais c'est probablement pas le cas, donc dans ce cas-là -> erreur.
Folco (./3) :
mon avis très très personnel : "optimisation" et "assembleur" ne font pas bon ménage
L'éternel débat grin
Ce qui est sûr, c'est que ça doit être désactivable (et probablement pas activé par défaut).
Folco (./3) :
amha, c'est pas de l'optimisation ça, c'est juste que, sans longueur précisée, l'assembleur fait ce qu'il veut. C'est à dire qu'il va exporter un relogement, et un linker intelligent utilisera le mode d'adressage le plus court possible
Ça se tient.