在文章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