Bonjour à tous,
Je cherche a recoder la fonction strlen de la libc. Mon problème est lorsque je calcul la length de la chaine il me retourne toujours le même nombre alors que je push bien mon argument et mov bien mes registres et je n'arrive pas a comprendre pourquoi enfaite je renvoie toujours le même nombre.
Voila ce que j'ai fais:
Est-ce que vous auriez une doc pour des explications ou une piste a me donner pour que je puisse corriger mon soucie.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 section .text global _start, my_strlen my_strlen: push rbp, ; met rbp sur la stack mov rbp, rsp ; met rsp dans rbp mov rbx, [rbp + 8] ; met le 1er argument dans rbx xor rax, rax ; taille loop: cmp byte [rbx], 0h ; comparaison avec NULL jz end ; fin de la chain inc rax ; incremente la taille de 1 inc rbx ; prochain byte jmp loop ; rappel loop end: pop rbp ret
Merci d'avance
Partager