section .text
global my_strlen
my_strlen:
xor rax, rax
.LOOP:
cmp BYTE[rdi+rax], 0
jne .LOOP
inc rax
ret
J'exercerai avec:Pourquoi ce code d'assemblage x86_64 ne fonctionne-t-il pas?
#include <stddef.h>
#include <stdio.h>
extern size_t my_strlen(const char *str);
int main(int argc, char *argv[]) {
if(argc!=2) return 1;
printf("%lu\n", (unsigned long)my_strlen(argv[1]));
return 0;
}
Mais quand j'exécute le programme, il ne affiche rien et il ne ferme pas.
Le 'inc rax' ne devrait-il pas être dans la boucle? – sl0815