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- ) )-,_. ,\ ( `'-'
'---''(_/--' `-'\_)