IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

[NASM / Mandriva] Erreur lors de la compilation


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 29
    Points
    29
    Par défaut [NASM / Mandriva] Erreur lors de la compilation
    Bonjour,
    je lisais le cours d'assembleur de Paul Carter, et j'ai écrit le premier programme, mais quand je compile :
    $ nasm -f coff first.asm
    first.asm:13: warning: uninitialised space declared in non-BSS section `.text': zeroing
    first.asm:14: warning: uninitialised space declared in non-BSS section `.text': zeroing

    Voilà le texte du programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    segment.data
     
    prompt1	db	"Enrer un nombre : ", 0
    prompt2	db	"Entrer un autre nombre : ", 0
    outmsg1	db	"Vous avez entre : ", 0
    outmsg2	db	" et ", 0
    outmsg3	db	", leur somme est : ", 0
     
    segment.bss
     
    input1	resd	1
    input2	resd	1
     
    segment.text
    	global 	_asm_main
    _asm_main:
    	enter 0,0
    	pusha
     
    	mov	eax, prompt1
    	call	print_string
     
    	call	read_int
    	mov	[input1], eax
     
    	mov	eax, prompt2
    	call	print_string
     
    	call	read_int
    	mov	[input2], eax
     
    	mov	eax, [input1]
    	add	eax, [input2]
    	mov	ebx, eax
     
    	dump_regs	1
    	dump_mem	2, outmsg1, 1
     
    	mov	eax, outmsg1
    	call	print_string
     
    	mov	eax, [input1]
    	call	print_int
     
    	mov	eax, outmsg2
    	call	print_string
     
    	mov	eax, [input2]
    	call	print_int
     
    	mov 	eax, outmsg3
    	call	print_string
     
    	mov	eax, ebx
    	call	print_int
    	call	print_nl
     
    	popa
    	mov	eax, 0
    	leave
    	ret
    Où est l'erreur ?
    Merci d'avance

  2. #2
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Ça doit être parce que tu n'as pas mis d'espaces en le mot-clé "segment" et l'identifiant qui suit.
    :wq

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Bonjour,
    Oui c'est exactement ça , merci ..
    mais après quand j'essaye de compiler avec gcc:

    $ gcc -o first first.o driver.c ../linux-ex/asm_io.o
    first.o: file not recognized: File format not recognized
    collect2: ld a retourné 1 code d'état d'exécution

    je sais pas non plus d'où vient l'erreur !
    Merci pour votre aide.

  4. #4
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Tu es sur quel OS ?
    :wq

  5. #5
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Mandrivia 2008

  6. #6
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Essaie avec cette commande-là :
    Si jamais ça ne marche pas tape "nasm -hf" et regarde quel autre format serait le bon, au pire teste-les tous.
    :wq

  7. #7
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    Merci ça marche avec 'elf'
    j'ai deux autres questions à vous poser:
    1- En école nous on faisait après segment .text
    global _main
    extern _printf
    et sans inclure aucun ficher, est ce que je peux faire le même programme avec sans avoir besoin d'appler le fichier asm_io.inc fournit par l'auteur.
    2- Comment je peux utiliser le GDB sous linux pour visualiser les registres du microprocesseur, le contenu de la mémoire, et la pile ..

    Merci

  8. #8
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Citation Envoyé par Elaich Voir le message
    Merci ça marche avec 'elf'
    N'oublie pas la balise [Résolu].

    Citation Envoyé par Elaich Voir le message
    j'ai deux autres questions à vous poser:
    1- En école nous on faisait après segment .text
    global _main
    extern _printf
    et sans inclure aucun ficher, est ce que je peux faire le même programme avec sans avoir besoin d'appler le fichier asm_io.inc fournit par l'auteur.
    La méthode de Paul Carter permet de compiler ses exemples sur toutes les plate-formes en changeant un minimum les sources (normalement ses headers
    s'en chargent). Avec GCC ça fonctionnera mais avec le compilateur C de Visual Studio voilà le seul moyen que j'ai trouvé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cl fichier.obj /link /entry:_main msvcrt.lib
    Citation Envoyé par Elaich Voir le message
    2- Comment je peux utiliser le GDB sous linux pour visualiser les registres du microprocesseur, le contenu de la mémoire, et la pile ..
    Aucune idée, regarde dans la documentation : http://sourceware.org/gdb/current/on...b.html#SEC_Top
    :wq

  9. #9
    Nouveau membre du Club
    Inscrit en
    Mai 2008
    Messages
    45
    Détails du profil
    Informations personnelles :
    Âge : 35

    Informations forums :
    Inscription : Mai 2008
    Messages : 45
    Points : 29
    Points
    29
    Par défaut
    d'accord merci beaucoup !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 09/04/2015, 11h01
  2. Erreur lors de la compilation de MySQL
    Par webrider dans le forum SUSE
    Réponses: 2
    Dernier message: 06/03/2007, 11h21
  3. Erreur lors de la compilation avec OmniORB
    Par JohnKwada dans le forum CORBA
    Réponses: 1
    Dernier message: 07/09/2006, 17h34
  4. erreur lors de la compilation
    Par ksoft dans le forum MFC
    Réponses: 2
    Dernier message: 02/05/2006, 15h40
  5. Réponses: 4
    Dernier message: 22/02/2006, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo