1

2

Folco (./1) :
- comment passer les flags en assembleur, sachant que je veux faire du read-only ? move.w #'r',-(sp) ?

Ça ne va pas marcher, il faut passer un pointeur.
pea.l str_r(%pc)

str_r: .asciz "r"

Ca m'intéresserait d'ouvrir en "text mode" pour ne pas avoir à vérifier moi-même que c'est un texte hehe Comment obtenir ça ?

Si tu passes "r", c'est ouvert en mode texte, c'est "rb" pour le binaire.
- un texte ouvert en lecture seule n'est pas désarchivé j'imagine, et un texte en ro l'est ?

fopen ne désarchive rien du tout (ni celui de TIGCCLIB, ni celui de PedroM le font), c'est à toi de désarchiver le fichier avant d'y écrire.
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é

3

Kevin Kofler (./2) :
Folco (./1) :
- comment passer les flags en assembleur, sachant que je veux faire du read-only ? move.w #'r',-(sp) ?

Ça ne va pas marcher, il faut passer un pointeur.
pea.l str_r(%pc)

str_r: .asciz "r"

  bsr.s \suite
  dc.b "r",0
  even
\suite

miam

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

4

J'aime bien la façon postée dans ./3, je l'ai mise dans S1P9.
Si la chaine "r" n'est présente qu'à un seul endroit du programme, la façon de ./3 est plus petite que la façon de ./2. Sinon, au bout de 2 ou 3 occurrences de "r", si le merge des constantes est activé, la façon de ./2 devient plus petite.
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

Joli, je n'y avais jamais pensé wink
Enfin, c'est pas hyper lisible tout de même hehe
avatar
« Quand le dernier arbre sera abattu, la dernière rivière empoisonnée, le dernier poisson capturé, alors vous découvrirez que l'argent ne se mange pas. »

6

Lionel Debroux (./4) :
J'aime bien la façon postée dans ./3, je l'ai mise dans S1P9.
Si la chaine "r" n'est présente qu'à un seul endroit du programme, la façon de ./3 est plus petite que la façon de ./2. Sinon, au bout de 2 ou 3 occurrences de "r", si le merge des constantes est activé, la façon de ./2 devient plus petite.

Ben non c'est idiot pour deux raisons :
- si c'est juste "r" et pas "rb" ça prend pas plus de place de redéfinir la chaîne à chaque fois façon ./3 que d'utiliser ./2, et il n'y a pas besoin de le définir ailleurs (et en plus ça a l'avantage de se compresser mieux que ./2)
- même si c'était pas le cas autant se servir de ./3 une fois et faire en sorte que ./2 utilise cette chaîne plutôt qu'une chaîne séparée

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

7

Effectivement, bien vu pour le premier point, parce que la chaîne ne fait qu'un caractère + le \0.
Pour le deuxième point: je ne suis pas sûr qu'on puisse faire ce que tu suggères sans ajouter de .globl ou de .section.
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

8

si votre linker est buggé... tongue

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

9

J'ai juste émis une hypothèse tongue
Je ne connais pas aussi finement le comportement du linker de TIGCC:
* est-ce qu'il merge des trucs sans .globl;
* si "r" est compris 2 fois dans .text et 2 fois dans .data, est-ce qu'à la fin, on va avoir une occurrence de "r" pour .text et une pour .data, ou une pour le programme entier ?
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

10

si .data est modifiable tu devrais avoir 2 dans .data et 1 dans .text non ?

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

11

12

il sert si tu veux changer le "r" en "rb" et que tu veux pas que ton programme plante tongue

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

13

TIGCC ne merge que les sections explicitement déclarées "mergeable". (GCC fait ça tout seul pour les chaînes de caractères, mais en assembleur, c'est la responsabilité du programmeur.)
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é

14

15

C'est quoi le rapport ?

16

17

Folco (./16) :
Parce que j'imagine que l'argument dont l'adresse est passé est lu comme une chaine de caractère, donc qu'il faut un '0' à la fin ?


Oui

18

Folco> j'ai rien compris grin si tu remplaces "r",0 en "rb",0 tu as bien un 0 terminal, et le even devient nécessaire donc autant le mettre systématiquement...

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

19

20

S'il y a pas le zero il gueule.

21

22

23

Heu...
Techniquement, PedroM n'est pas du tout robuste sur l'oublie de fclose sur un fichier...
Faudrait que j'améliore çà.
Folco (./22) :
C'est foutu comment, il y a un compteur incrémentiel comme pour les libs dynamiques, et c'est déchargé automatiquement en fin de programme ?


Cf files.c

24

25

26

C'est possible

27

28

Folco (./27) :
1. Est-ce que ça va pas consommer de mémoire supplémentaire si je fais deux fopen sur le même fichier ?


Non
Folco (./27) :
2. Dois-je fermer autant de fois un fichier avec fclose que je l'aurai ouvert ?


Oui
Folco (./27) :
3. Bref, est-ce que c'est aussi bien foutu que quand on fait plusieurs LibsBegin sur un fichier ? biggrin.gif


Ca dépend smile

29

30