Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1430 connectés 

  FORUM HardWare.fr
  Programmation
  C

  gcc et code assembleur

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

gcc et code assembleur

n°922169
peemousse
Posté le 13-12-2004 à 18:41:05  profilanswer
 

Salut je veux compiler un programme C avec du code assembleur mais ca passe très ma à la compilation.
J'ai la version 3.3.5 de GCC.
 
Voici un exemple de code:
 

Code :
  1. main()
  2. {
  3.         __asm__("
  4.                 xorl %ebx, %ebx
  5.                 mov $0x1, %eax
  6.                 int $0x80
  7.         " );
  8. }


 
J'ai les erreurs suivantes à la compilation:
 

test.c:3:17: missing terminating " character
test.c: In function `main':
test.c:4: error: parse error before "xorl"
test.c:7:9: missing terminating " character

 
 
 
 
Merci pour votre aide


Message édité par peemousse le 13-12-2004 à 18:52:43
mood
Publicité
Posté le 13-12-2004 à 18:41:05  profilanswer
 

n°922180
Taz
bisounours-codeur
Posté le 13-12-2004 à 18:52:30  profilanswer
 

Code :
  1. unsigned int uilog2(unsigned int x)
  2. {
  3. unsigned int lz;
  4. asm ("cntlzw %0,%1" : "=r" (lz) : "r" (x));
  5. return 31 - lz;
  6. }
  7. #include <stdio.h>
  8. #include <assert.h>
  9. int main()
  10. {
  11. unsigned i;
  12. for(i = 1; i < 32; ++i)
  13. {
  14.  assert(i == uilog2(1 << i));
  15. }
  16. return 0;
  17. }

chez moi ça marche :P

n°922181
Lam's
Profil: bas.
Posté le 13-12-2004 à 18:54:07  profilanswer
 

Il faut fermer tes guillemets à la fin de chaque ligne, et prendre soin de séparer chaque instruction. Par contre, il n'y a plus besoin de spécifier la taille des instructions.
 
Donc:

Code :
  1. main()
  2. {
  3.         __asm__("xor %ebx, %ebx;"
  4.                 "mov $0x1, %eax;"
  5.                 "int $0x80"
  6.         );
  7. }


 
Question: pourquoi ne pas utiliser syscall0 ? (tu as l'air de faire des appels systèmes linux...)

n°922183
peemousse
Posté le 13-12-2004 à 18:54:38  profilanswer
 

Hannn ok !
merci Lam's !
 
Dans l'exemple c'est juste l'appel system Exit(0) ...
 
Je débute en assembleur donc je fais un maximum de test de différents trucs :p
 
thx


Message édité par peemousse le 13-12-2004 à 18:56:26
n°922188
Lam's
Profil: bas.
Posté le 13-12-2004 à 18:58:53  profilanswer
 

Taz a écrit :

chez moi ça marche :P


Bof, nous sur Intel, on calcule directement ln(x)/ln(2), je suis sûr que ça va aussi vite... :o  

n°922189
Taz
bisounours-codeur
Posté le 13-12-2004 à 18:59:44  profilanswer
 

mon oeil


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  gcc et code assembleur

 

Sujets relatifs
[ASP] Erreur dans le code[Struts] lancer une action dans le code jsp
executer du code au chargement d'une formCode VBA de mise en forme conditionnelle
un code écrit en assembleur est-il exécutable sur n'importe quel OS ?[ Linux ] Un prog pour obtenir le code assembleur d'un exécutable ?
Integration de code assembleur dans du C avec mingw32ecrire une routine assembleur dans un code source C
[ASSEMBLEUR] Correspondance instructions/code hexaintegrer du code en assembleur dans du c.... comment??
Plus de sujets relatifs à : gcc et code assembleur


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR