Pages : 1
#1 Le 07/09/2020, à 18:34
- m.s0
gcc et as pour assembleur
bonjour,
lorsque j’exécute le programme "bonjour tout le monde" compilé avec as, j'ai ce message d'erreur:
as --64 btlm.s
chmod +x a.out
./a.out
bash: ./a.out : impossible d'exécuter le fichier binaire : Erreur de format pour exec()
file a.out
a.out: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
avec gcc, j'ai ce message:
gcc -o btlm btlm.s
/usr/bin/ld: /tmp/ccAqmp67.o: relocation R_X86_64_32 against `.data' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status
gcc -fPIE -o btlm btlm.s
/usr/bin/ld: /tmp/ccVK2DZq.o: relocation R_X86_64_32 against `.data' can not be used when making a PIE object; recompile with -fPIE
collect2: error: ld returned 1 exit status
voici le code:
.data # directive de création d'une zone de donnée
# adresse symbolique pointant sur la chaîne:
btlm:
.string "Bonjour tout le monde!\n"
.text # directive de création d'une zone
# d'instructions
.globl main # directive de création d'une étiquette
# de portée globale
main: # main est l'adresse de début du programme
movl $4,%eax # sélection de la fonction write du système
movl $1,%ebx # dernier paramètre de write : stdout
movl $btlm,%ecx # premier paramètre de write : l'adresse de
# la chaîne de caractères à afficher
movl $23,%edx # le nombre de caractères à afficher : 23
int $0x80 # appel de l'interruption 128 > GNU/Linux
movl $1,%eax # sélection de la fonction exit du système
xorl %ebx,%ebx # mise à zéro du 1er paramètre en utilisant
# xor, c'est à dire ou exclusif
int $0x80 # appel de l'interruption 128 > GNU/Linux
ret
quelqu'un a une idée?
Hors ligne
#2 Le 07/09/2020, à 18:56
- NicoApi73
Re : gcc et as pour assembleur
Bonsoir
as btlm.s -o btlm.o
ld btlm.o -o btlm
./btlm
Hors ligne
#3 Le 07/09/2020, à 20:47
- m.s0
Re : gcc et as pour assembleur
ld btlm.o -o btlm
ld : avertissement : le symbole d'entrée _start est introuvable ; utilise par défaut 0000000000401000
comment dois-je introduire _start?
et pour gcc?
une idée?
Hors ligne
#4 Le 07/09/2020, à 20:49
- m.s0
Re : gcc et as pour assembleur
ha, c'est qu'un avertissement!
en fait,ça marche
merci NicoApi73
Hors ligne
#5 Le 07/09/2020, à 21:06
- m.s0
Re : gcc et as pour assembleur
.data # directive de création d'une zone de donnée
# adresse symbolique pointant sur la chaîne:
btlm:
.string "Bonjour tout le monde!\n"
.text # directive de création d'une zone
# d'instructions
.global _start # directive de création d'une étiquette
# de portée globale
_start: # main est l'adresse de début du programme
movl $4,%eax # sélection de la fonction write du système
movl $1,%ebx # dernier paramètre de write : stdout
movl $btlm,%ecx # premier paramètre de write : l'adresse de
# la chaîne de caractères à afficher
movl $23,%edx # le nombre de caractères à afficher : 23
int $0x80 # appel de l'interruption 128 > GNU/Linux
movl $1,%eax # sélection de la fonction exit du système
xorl %ebx,%ebx # mise à zéro du 1er paramètre en utilisant
# xor, c'est à dire ou exclusif
int $0x80 # appel de l'interruption 128 > GNU/Linux
ret
Hors ligne
#6 Le 09/09/2020, à 14:48
- AMOR19
Re : gcc et as pour assembleur
Salut NicoApi. Je m'excuse si je saute un peu comme ça dans cette discussion mais j'ai besoin de ton aide ici si c'est possible bien évidemment. J'ai vu que t'es intervenu avec succès pour résoudre des problèmes de ce genre. Je te remercie à l'avance et je réitère mes excuses à tout le monde.
Hors ligne
Pages : 1