Hello, world en assembleur x86_64 avec appel de la libC

Page principale

Répondre à ce message
Auteur: Patrice Karatchentzeff
Date:  
À: GUILDE
Sujet: Hello, world en assembleur x86_64 avec appel de la libC
Salut,

Je n'arrive pas à écrire un bête Hello, world en assembleur 64 bits en
utilisant la fonction print() de la libC (mais j'y arrive en appelant
la fonction write() du noyau !) :

% cat bonjour3.S
global _start

SECTION .data
hello           db  "Hello World!", 10, 0   ; const char *
hello_len       equ $ - hello               ; size_t


SECTION .text
    extern printf


_start:
    ; return printf(hello);
    lea     rdi, [hello]
    xor     rax, rax
    call    printf wrt ..plt
    ret


    ;; ; exit(0) ; c'est pourri, mais pas la question
    mov  rax, 60
    xor rdi, rdi
    syscall


% nasm -felf64 bonjour3.S
% ld bonjour3.o -o bonjour3 -lc --dynamic-linker /lib/ld-linux-x86-64.so.2
% ./bonjour3
zsh: aucun fichier ou dossier de ce type: ./bonjour3

% file bonjour3
bonjour3: ELF 64-bit LSB executable, x86-64, version 1 (SYSV),
dynamically linked, interpreter /lib/ld-linux-x86-64.so.2, not
stripped

????

Merci de vos lumières,

PK

-- 
      |\      _,,,---,,_           Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:patrice.karatchentzeff@gmail.com
     |,4-  ) )-,_. ,\ (  `'-'
    '---''(_/--'  `-'\_)