在文章Say Hello to Assembly - Part 3中,作者想要在堆棧上打印一個字符串(轉換後的整數)。 r12
包含字符串中的數字個數。裝配乘法簡化?
;;; 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
我的問題是,我們可以簡化爲:
;;; Find length of string
mov rax, 8 ; 8 times num digits
mul r12
mov rdx, rax ; length of string int rdx
或者是有什麼微妙的關於作者的方法,我很想念?
對我來說,他看起來像他正在把rax
乘以r12
然後把r12
然後再乘以8。我的方法似乎更清潔,似乎工作。
注意,RDX必須在RSI的字符串的長度SYS_WRITE調用。 – MERM