1

Je ne savais pas trop où poster ce topic, mais comme je pense qu'à peu près tous ceux qui savent coder en ASM connaissent aussi le C, il est mieux ici que dans la rubrique C.
Voilà mon problème : je fais un calcul du style a*b/c mais je ne suis pas satisfait du code assembleur produit. J'aimerais que TIGCC utilise muls puis divs, mais rien à faire, j'ai essayer de transtyper de beaucoup de façons différentes, à chaque fois TIGCC utilise __divsi3 ou bien ne fait une division que de 16 bits / 16 bits alors que moi j'ai besoin de 32 bits / 16 bits.
Je me suis donc mis en tête d'écrire une macro qui écrive le code correct.
(c)); \ resultat;})
J'ai donc essayé ça :#define ProduitCroix(a,b,c) \
	({ unsigned long resultat; \
	asm("muls.w %2,%1; divs.w %3,%1" \
	: "=d"(resultat) \
	: "d" (a), "d"(b), "d"
Mais sauf que parfois d0 est utilisé pour resultat mais a correspond à un autre registre, ce qui crée des erreurs lors de la suite du programme, donc j'ai corrigé en mettant ça :
#define ProduitCroix(a,b,c) \
	({ unsigned long resultat; \
	asm("muls.w %2,%1; divs.w %3,%1; move.w %1,%0" \
	: "=d"(resultat) \
	: "d" (a), "d"(b), "d"(c)); \
	resultat;})
Mais le problème c'est que quand d0 est utilisé pour resultat et qu'il est aussi utilisé à la base pour a ça me sort un move.w %d0,%d0 sad
et puis j'ai l'impression aussi que ça plante parfois, mais je ne suis pas sûr que ce soit à cause de ma macro (même si je la soupçonne très fortement, parce qu'avant ça ne plantait presque pas).
Merci.

2

jackiechan a écrit :
Je ne savais pas trop où poster ce topic, mais comme je pense qu'à peu près tous ceux qui savent coder en ASM connaissent aussi le C, il est mieux ici que dans la rubrique C.
Voilà mon problème : je fais un calcul du style a*b/c mais je ne suis pas satisfait du code assembleur produit. J'aimerais que TIGCC utilise muls puis divs, mais rien à faire, j'ai essayer de transtyper de beaucoup de façons différentes, à chaque fois TIGCC utilise __divsi3 ou bien ne fait une division que de 16 bits / 16 bits alors que moi j'ai besoin de 32 bits / 16 bits.

En effet, il y a l'air d'y avoir un problème dans les patterns de division 68k. sad
Je me suis donc mis en tête d'écrire une macro qui écrive le code correct.
(c)); \ resultat;})
J'ai donc essayé ça :#define ProduitCroix(a,b,c) \
	({ unsigned long resultat; \
	asm("muls.w %2,%1; divs.w %3,%1" \
	: "=d"(resultat) \
	: "d" (a), "d"(b), "d"
Mais sauf que parfois d0 est utilisé pour resultat mais a correspond à un autre registre,

#define ProduitCroix(a,b,c) \
	({ unsigned long resultat; \
	asm("muls.w %2,%0; divs.w %3,%0" \
	: "=d"(resultat) \
	: "0" (a), "d"(b), "d"(c)); \
	resultat;})
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

Aah, merci beaucoup Kevin, tu me sauves la vie love

4

> il y a l'air d'y avoir un problème dans les patterns de division 68k
Ca fait super-longtemps que ce bug est là. Je m'en suis aperçu il y a bien 1 an 1/2. A l'époque, je n'ai jamais réussit à faire générer un mulx par TIGCC.
Je pensais que ce bug avait été corrigé eek
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.

5

Est-ce que seulement tu l'avais reporté, depuis tout ce temps ? Si ça n'est pas le cas, tu peux difficilement t'étonner qu'il n'ait pas été corrigé plus tôt...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

6

J'attendais la remarque grin

Un bug aussi énorme, je me disais que c'était un problème qui serait corrigé dès la version suivante. Je ne pensais pas que vous ne fesiez pas plus attention au code généré par votre compilo 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.

7

Thibaut a écrit :
> il y a l'air d'y avoir un problème dans les patterns de division 68k
Ca fait super-longtemps que ce bug est là. Je m'en suis aperçu il y a bien 1 an 1/2. A l'époque, je n'ai jamais réussit à faire générer un mulx par TIGCC.
Je pensais que ce bug avait été corrigé eek

Les mul[su] marchent parfaitement. Ce sont les div[su] qui ne marchent pas.

Et on a autre chose à faire que d'examiner le code produit par GCC. S'il est de mauvaise qualité, reportez-le nous. D'ailleurs, c'est très probablement de la faute des développeurs de GCC, pas de la nôtre. smile
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é

8

Même sur PC, GCC produit ce code pourrit pour la division ?

> S'il est de mauvaise qualité, reportez-le nous
Fait attention à ce que tu dis, c'est un coup à voir ta boîte exploser sous les mails tellement il y a d'horreurs avec GCC grin
Ca reste quand même le meilleur compilo à ce jour => je n'ose pas imaginer le code produit par ceux de Borland ou M$...
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.

9

Thibaut
a écrit : Même sur PC, GCC produit ce code pourrit pour la division ?

As-tu lu ce que j'ai écrit??? "En effet, il y a l'air d'y avoir un problème dans les patterns de division 68k." Depuis quand il y a un 68k dans ton PC???
> S'il est de mauvaise qualité, reportez-le nous
Fait attention à ce que tu dis, c'est un coup à voir ta boîte exploser sous les mails tellement il y a d'horreurs avec GCC grin

rotfl
Pour l'instant, je n'en ai pas reçu un seul. smile
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é

10

> As-tu lu ce que j'ai écrit ???
Oui, tu as écrit "c'est très probablement de la faute des développeurs de GCC, pas de la nôtre" tongue
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.

11

Tu n'as toujours rien compris!!! (Comme d'habitude, d'ailleurs...) Je te signale que le 68k fait partie des processeurs supportés d'origine par GCC, et que j'ai déjà dit plus haut que c'est très probablement un problème spécifique au target 68k de GCC qui ne se retrouvera pas sur les autres architectures. Apprends à lire!
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é

12

Haaa love Je viens bien moins souvent qu'avant, et je constate que tu t'améliores au fils du temps smile
De plus en plus sympathique, le Kev' triso
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

grin
avatar
Tutorial C (TI-89/92+/v200) - Articles Développement Web (PHP, Javascript, ...)
« What is the sound of Perl? Is it not the sound of a wall that people have stopped banging their heads against? » - Larry Wall

14

C'est comme le vin, plus c'est vieux et plus on se délecte love
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.

15

rmq faut pas depasser un certain stade tout de meme, sinon c du vinaigre embarrassed
avatar
Inuki POWA !
СИЛАС терженя !

16

Après ça moisit carrément, il n'y a plus rien d'autre à faire que de le jeter aux ordures tusors
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

Great. Et un petit coup de flood pour changer un peu...
Si le truc n'a pas été corrigé, c'est quand même peut-être un peu de ta faute, Thibaut...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

18

UN PEU. C'est autant, sinon plus, de la vôtre.
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

Bon. J'arrête la discussion, parce que je vais encore, de toute façon, avoir tort...
avatar
Membre de la TI-Chess Team.
Co-mainteneur de GCC4TI (documentation en ligne de GCC4TI), TIEmu et TILP.
Co-admin de TI-Planet.

20

He oui, Môôôôssieur : tu as tort, autant que moi tongue
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.