Re: Hello, world en assembleur x86_64 avec appel de la libC

Page principale

Répondre à ce message
Auteur: Patrice Karatchentzeff
Date:  
À: guilde
Sujet: Re: Hello, world en assembleur x86_64 avec appel de la libC
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-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)