Dans l'article Say Hello to Assembly - Part 3 l'auteur veut imprimer une chaîne (nombre entier converti) sur la pile. r12
contient le nombre de chiffres de la chaîne.La multiplication de l'assemblage multiplie-t-elle?
;;; Find length of string
mov rax, 1
mul r12
mov r12, 8 ; 8 times num digits to get len in bytes
mul r12
mov rdx, rax ; length of string int rdx
;;;; print sum
mov rax, SYS_WRITE
mov rdi, STD_OUT
mov rsi, rsp
syscall
Ma question est peut-on simplifions à:
;;; Find length of string
mov rax, 8 ; 8 times num digits
mul r12
mov rdx, rax ; length of string int rdx
Ou est-il quelque chose de subtil sur la méthode de l'auteur que je suis absent?
Pour moi, on dirait qu'il met 1 à rax
en multipliant par r12
puis en mettant 8 dans r12
puis en multipliant à nouveau. Ma méthode semble plus propre et semble fonctionner.
Notez que RDX doit être la longueur de la chaîne en rsi pour l'appel SYS_WRITE. – MERM