Bingo ! C'est bien l'ordre...
Bon, du coup, y'avait deux bogues. Il ne faut pas de ret avec l'appel
à la libC et évidemment, il faut que la chaîne se termine avec un
NULL, sinon, le printf ne fonctionne pas.
global _start
extern printf
; constantes
SYS_EXIT equ 60
; données initialisées
SECTION .data
message db "Bonjour tout le monde !",0xa,0
; le code du programme
SECTION .text
_start:
; printf(message);
lea rdi, [message]
xor rax, rax
call printf
;; exit(60, 0);
mov rax, SYS_EXIT
xor rdi, rdi
syscall
Merci : ça m'a débloqué :!
PK
Le lun. 19 déc. 2022 à 17:44, Christian Marillat <marillat@???> a écrit :
>
> On 19 déc. 2022 17:09, Patrice Karatchentzeff <patrice.karatchentzeff@???> wrote:
>
> > Salut Christian,
> >
> > Merci pour le lien : je l'avais déjà.
> >
> > Je ne suis pas trop d'accord. Il n'y a aucune raison AMHA pour virer
> > ld pour gcc. Ou alors je veux bien l'explication :)
>
> L'ordre des paramètres est important :
>
> ld -dynamic-linker /lib64/ld-linux-x86-64.so.2 -o bonjour3 -lc bonjour3.o
>
> Par contre :
>
> $ ./bonjour3
> Hello World!
> zsh: segmentation fault (core dumped) ./bonjour3
>
> Christian
>
--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_ mailto:patrice.karatchentzeff@gmail.com
|,4- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_)