In dem Beitrag Say Hello to Assembly - Part 3 der Autor möchte eine Zeichenfolge (konvertierte Ganzzahl) auf dem Stapel drucken. r12
enthält die Anzahl der Ziffern in der Zeichenfolge.Montage mehrfach vereinfacht?
;;; 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
Meine Frage ist, können wir vereinfachen:
;;; Find length of string
mov rax, 8 ; 8 times num digits
mul r12
mov rdx, rax ; length of string int rdx
Oder gibt es etwas subtiler über die Methode des Autors, dass ich fehle?
Für mich sieht aus wie er setzt 1 in rax
Multiplikation mit r12
dann setzen 8 in r12
und dann wieder multiplizieren. Meine Methode scheint sauberer und scheint zu funktionieren.
Beachten Sie, dass rdx die Länge der Zeichenfolge in rsi sein muss der Aufruf SYS_WRITE. – MERM