Seuls d0 et a0 seront détruits, donc comme c'est une fonction pas la peine de sauver les registres.
Oui, tu sauves beaucoup trop de registres.
Version "C" de cette routine je n'ai pas sous la main la version C:
/*===========================================================================*/
/* Returns a pointer to the adress where is stored the contrast. */
/* This function is from TI-Chess. */
/*===========================================================================*/
volatile unsigned char *contrast(void);
asm("contrast: move.w #4,%d0;trap #9;rts");
Cette routine et plusieurs autres trucs touchant au contraste sont dans les pending updates de TIGCCLIB / la doc de TIGCC.
On même utiliser une macro, la valeur du contraste est génèralement lue qu'une seule fois dans un programme.
#define CONTRAST ({unsigned char __contrast; \
asm ("moveq #4,%%d0; trap #9; move.b (%%a0),%0" \
: "=g"(__contrast) :: "d0","a0"); \
__contrast; })
Il n'y a pas de version C. On ne peut pas appeler un trap en C pur.
paxal Le 24/02/2003 à 19:56 Cool, merci!
Et à quand l'implémentation dans TiGcc?
> Il n'y a pas de version C. On ne peut pas appeler un trap en C pur.
Bien sûr, mais je voulais parler de ce que ExtendeD a posté. A peu de chose près (noms différent), c'est ce que j'ai mis dans le pending update pour la doc de TIGCC. J'avais oublié que j'avais la version C + ASM inline avec opérandes C dans le .hsf...