1

J'ai un petit problème, qui n'en est pas vraiment un mais qui reste quand même obscur...

Dans vertel, je testais les différentes fonctions avec des if(!strcmp(fonction,"drw_pixl")) {...}. Et en essayant quelques optimisations j'ai été amenné à déclarer la fonction suivante :

int tst_strn(const char *tbl_str,const char *chr_fnc)
{
return !strcmp(tbl_str,chr_fnc);
}


Elle fonctionne donc exactement à l'inverse de strcmp, en retournant 0 si les chaines sont différentes. J'ai ensuite remplacé tous les if(!strcmp(...)) du programme par des if(tst_strn(...)), et au total ça me fait un gain de place de presque 100 octets.
Pourquoi le fait de remplacer une instruction par une autre fait diminuer la taille, alors que normalement elle aurait du augmenter avec la fonction déclarée ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

2

doomc normal. la fonction est stockée une fois ds le prog. les appels de fonctions, y'en a pleins. et dq tu fais if(!strcmp(...)) y'a un not en plus à chaque fois ;-)

3

ahhh... et c juste tous ces "not" qui font la différence ???
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

4

bah s'il y a 50 "not" tous utilisé de la même façon pour une fonction, oui tu vas gagner de la place, même si tu en pers un peu pour la déclaration de la fonction.
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

5

boh y'en a pas 50, et puis je n'imaginais pas que ça prenait autant de place eek
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

6

ah pas con, v faire pareil grin
Police un de Cinq et cinq de police d'un: le le tout l'est UNISSENT
D'être de raison de mA de trouve de je de que de suscite de je de que de l'incompréhension de dans de C'est.
Moi de suis de Je, et pas d'autres ne le sont de les de que de parce de je le suis, et personne de mA de forment de qui d'eux de sont de la CE de que.
Inconscience et d'imagination de source de sont de déraison.
Conscience de delà de ma et de mon inconscient, réalité créent d'Au de La de rêves de mes.

7

oué, j'ai modif qq truc chez moi aussi. winkgrin
Non-Webmaster et non-programmeur du site. .Pour tout probleme ou question ,débrouillez vous avec les Webmasters .

«- Pas Moo ! ^^

8

Bah ça va au moins j'ai pas l'impression d'avoir posté pour rien grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

9

Bob 64 a écrit :
boh y'en a pas 50, et puis je n'imaginais pas que ça prenait autant de place eek

doomgniben UN not, ça prend 2 octets :-o et puis le compilo peut optimiser comme il le souhaite, je n'en sais pas plus. En tous cas le coup du not c le plus flagrant.

10

quoiqu'en y reflechissant c peut etre pas ça : le compilo devrait plutot echanger bne/beq hum

11

Mouis... mais je n'ai pas 50 not, il doit y en avoir 40 grand maximum (80 octets), moins la fonction ce qui nous fait un peu plus de 50 octets je pense. On est loin des 100 gagnés par cette manip confus
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

12

Pen^2 ; bouuuuuhhhhh grin honte à toi tongue tu racontes que des conneries triso

Bob 64 : strcmp est une ROM_CALL. Chaque appel génère un code de chargement (si tu n'as pas activé l'optimisation des ROM_CALLs) puis lecture de la table des ROM_CALLs (avec adressage indexé), etc, ce qui prend beaucoup plus d'octets que le simple bsr généré pour chaque appel à tst_strn smile
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.

13

ok la je comprends mieux grin
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)

14

Thibaut : oué je m'en suis rendu compte au post 9... sick

15

Ouai, mais bon ya aussi les passages des arguments de la fonctions.. le retour...
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

16

Mais que ce soit un ROM_CALL ou une fonction du programme, c'est pareil beer
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.

17

Ouai, mais on doit passer 2 fois les arg non?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

18

kess tu racontes confus
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.

19

Petite précision : le fait d'avoir un '!' ou pas ne change rien à l'affaire, et diminuerait un peu le code de ta fonction. Le compilo remplace juste le tst.w d0/beq label en tst.w d0/bne label (même le compilo de TI le fait, c dire wink)

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

20

C'est sûr, mais il a voulu simplifier l'écriture smile
... et réduire la taille de son programme par la même occasion magic
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.

21

sauf que gt loin d'imaginer que ça diminuerais effectivement la taille smile
avatar
All right. Keep doing whatever it is you think you're doing.
------------------------------------------
Besoin d'aide sur le site ? Essayez par ici :)