[SOS] Problème de faute triple

anthoine.bourgeois anthoine.bourgeois at wanadoo.fr
Ven 30 Mai 14:18:13 CEST 2008




> Message du 30/05/08 11:17
> De : "Julien Pichon" <glandoillator at hotmail.com>
> A : sos at the-doors.enix.org
> Copie à : 
> Objet : Re: [SOS] Problème de faute triple
> 
> 
> > From: anthoine.bourgeois at wanadoo.fr> To: sos at the-doors.enix.org> Date: Fri, 30 May 2008 10:10:44 +0200> Subject: Re: [SOS] Problème de faute triple> > Bonjour,> > Tiens nous au courant de ton avancement.> Ca m'intéresse d'avoir la version nasm de la partie assembleur.> Tu peux nous envoyer un patch quand ca sera terminé.> > A+,> Anthoine> 
> Salut,
>  
> D'accord pas de problèmes, je suis à l'article 4 et je compte avancer pas mal 
> pendant les mois qui arrivent, j'ai complètement refait les fichiers irq_wrappers.S
> exception_wrappers.S et multiboot.S. D'ailleurs j'ai découvert en lisant les archives de la mailing liste
> que des personnes ont rencontré le problème suivant: "Can't load under ou above 1 MB" lorsqu'ils ont
> fait des modifications sur multiboot.S pour qu'il soit assemblable avec nasm, ce problème vient de la valeur 
> du champs flag dans le multiboot header. Au lieu de faire:
>  
> FLAGS equ 0x00010003
>  
>  
> Il faut faire:
> MODULEALIGN equ  1<<0MEMINFO  equ  1<<1FLAGS  equ  MODULEALIGN | MEMINFO
>  
>  
> De plus beaucoup de personnes ont l'air d'avoir eut un problème avec Grub qui disait
> "Invalide format", j'ai pu constater que lorsque j'écrasais mes fichiers irq_wrappers.S
> exception_wrappers.S et multiboot.S par ceux de la version fournit par SOS 
> (eh oui j'été désespéré au bout d'un moment :p) et que je modifiais le Makefile en conséquence, 
> cette erreur apparaît sinon avec mes fichiers ASM assemblables avec nasm l'erreur disparaît.
>  
> Par contre je n'ai pas trouvé de solution pour l'assembleur inline de gcc qui permet de prendre des paramètres
> sous la forme asm("blablabla"
>                         : output operands
>                         : input operands
>                         : list of clobbered registers
>                         );
>  
> si quelqu'un a ?

Pour ça, je pense pas que tu puisses le changer en nasm. GCC utilise GAS comme assembleur.
Lorsque tu mets une fonction asm dans le code C, que tu assembles ton code C avec "gcc -S"
gcc te fais un fichier .S et le contenu de asm se retrouve tel quel dans le .S.
Il faudrai que tout gcc génère de l'assembleur nasm si tu veux utiliser nasm dans les
fonction asm. GCC n'est pas prèvu pour un autre assembleur que GAS.

Voir avec LLVM qui est un compilateur qui monte dans le monde BSD.

A+,
Anthoine



Plus d'informations sur la liste de diffusion Sos