1

Voila, je voulais savoir comment retourner une valeur d'une routine asm en C ( un nombre int char ou autre peut importe).
On m'a dit qu'il fallait mettre la valeur dans d0, mais le compilo accepte pas:

#define XPxlTest(x,y) {asm("move.w %0,%%d0;move.w %1,%%d1;bsr PxlTest":: "d" (x), "d" (y): "d1" ,"d3", "a0")}


quand je fais i=XPxlTest(1,1); il me met des erreurs d'accolades sad'
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

2

le passage par paramètres n'est pas encore géré, que je sache, non ?
Site : http://www.phareaway.com/
Membre du groupe Phare Away et webmaster du site

3

Non. Mais son workaround marcherait s'il était fait correctement:
#define XPxlTest(x,y) ({register int _d0 asm ("d0")asm("move.w %0,%%d0;move.w %1,%%d1;bsr PxlTest":: "d" (x), "d" (y): "d1" ,"d3", "a0")_d0;})
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é

4

Je rajoute quand-même que c'est extrêmement sale comme méthode! La manière de récupérer d0 est tout sauf propre. Et puis la manière de passer les arguments est tout sauf efficace. Il faudra vraiment attendre le passage par registres:
#undef PxlTest
extern int PxlTest(unsigned short x asm("d0"),unsigned short y asm("d1"));
#define XPxlTest PxlTest

[edit]Edité par Kevin Kofler le 11-02-2002 à 23:59:53[/edit]
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é

5

Ok mercismile
Mais elle est pour qaund cette version avec les passages par registres... ?
XLib v1.00 Powerrrrrrrrrrrrrrrrrrrr!

6

Ça ne dépend que de Sebastian Reichelt. Le patch est prêt!
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é

7

La sortie d'une nouvelle version (bêta) de TIGCC avec le passage par registres est désormais imminente.

Et j'ai aussi de bonnes nouvelles: le passage par registres automatique (désactivé par défaut pour des raisons de compatibilité, mais activable par -mregparm ou -mregparm=n) peut entraîner des gains de place non négligeables pour des sources en C avec beaucoup de fonctions. Dans TI-Chess, on épargne plus de 1300 octets non compressés (plus de 500 octets compressés). Je rappelle aussi que le passage par registres automatique est en principe indépendant de la spécification explicite des registres (on peut parfaitement utiliser l'un sans l'autre), mais que le patch qu'on a utilisé prévoyait les 2.

La mauvaise nouvelle est que pour être compatibles avec l'option -mregparm, les headers d'une librairie statique doivent déclarer chaque fonction attendant ses paramètres sur la pile avec __attribute__((__stkparm__)). Ça te fera un peu de travail. Mais je répète: ce n'est pas obligé d'être compatible avec -mregparm pour pouvoir utiliser le passage par registres avec spécification explicite.
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é