[NASM] Codage de strlen en assembleur x64
Bonjour,
Je suis débutant en langage assembleur. J'éssaye de recoder la fonction strlen.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
BITS 64
SECTION .text
global my_strlen
my_strlen:
PUSH RBP
MOV RBP, RSP
XOR RSI, RSI
XOR RCX, RCX
boucle:
CMP BYTE [RDI + RCX], sil
JZ fin
INC RCX
JMP boucle
fin:
MOV RAX, RCX
LEAVE
RET |
Le code est fonctionnel, cependant, je remarque que si j'enleve la ligne XOR RSI, RSI, mon programme segfault. J'ai donc cherché énormément à quoi cela servait d'assigner la valeur 0 à RSI, mais je trouve pas grand chose. Pouvait vous m'éclairer s'il vous plait ?
Merci d'avance !