Je n'ai jamais utilisé cc ni as, mais je vais tenter de faire quelque chose...
Pour le premier, c'est quoi le
{
char copie[sizeof(short)];
memcpy(copie,tab+1,casedim);
memcpy(tab+1,tab+2,casedim);
memcpy(tab+2,copie,casedim);
}
au milieu du code ? Je ne suis pas sûr que ça soit valide dans le "dialecte" C que "parle" cc. Essaie en déclarant copie au même endroit que tab.
Pour le deuxième, il manque une ligne, celle qui correspond à pea -3840(a6), dans le dernier appel (celui qui fait planter).
Le plantage n'est pas dû à un problème de débordement de pile (4140 octets, c'est parfaitement allouable sur la pile).
Ah, et une petite suggestion: si tu n'utilises pas printf, utilise ClrScr au lieu de clrscr.
>> Pour le premier, c'est quoi le
{
char copie[sizeof(short)];
memcpy(copie,tab+1,casedim);
memcpy(tab+1,tab+2,casedim);
memcpy(tab+2,copie,casedim);
}
au milieu du code ?
> C'est pour permuter les deux elemnts tab[1] et tab[2] du tableau, en fait je TENTE de faire une routine gerant ainsi tout : structures, short,char,...
Ca, j'avais compris. Je me suis mal exprimé. C'était les accolades au milieu du code et la déclaration d'une variable locale à cet endroit-là qui me posaient problème. Je n'étais pas sûr que cc le fasse bien.
> J'ai retiré et les accolades internes au main, et donc j'ai déclaré copie au début de main. Mais cette fois, j'obtiens un "line 1111 emulator"
Poste le code assembleur généré complet. Je parie que c'est encore du code invalide, comme celui que tu as posté l'autre fois.
> En fait moi je n'ai fait que la source C, c'est la version nostub de cc qui a fait cet asmsrc
Oui, je sais. Mais le fait d'avoir le code ASM permet de voir l'erreur. L'autre fois, c'était une erreur ASM (le compilateur semble oublier de pousser un argument). Là, c'est probablement pareil.
> En fait, on a juste pour fonctions une table des romcalls : je ne peut en faire qu'un seul,je ne sais pas à laquelle la ROMCALL correspond
clrscr n'est pas un ROM_CALL. clrscr est une macro qui appelle les ROM_CALLs ClrScr() et MoveTo(0,0). Elle n'est utile que pour des fonctions comme printf (les fonctions qui écrivent en mode TTY).

remplace short tab[3]; par bermudas tab[3];
c plus la saison
ça devrait marcher
pardon j'ai pas fais expres
Mais oui, c'est mieux que de se taper dessus.
Moi j'aime bien cet humour.
tu rigoles mais je fais tt le temps comme ça (mais c involontaire), apre sun gd sourire, elle se met a sourire et hop
Luigi Le 05/05/2003 à 08:16 Exuse moi XDanger, mais c'est le premier code que je poste
AS: donnons nous les moyens de programmer plus facilement
La solitude, c'est l'occasion de se poser beaucoup de questions que l'on a pas
souvent l'occasion de se poser