x86-64 汇编语言中的字符串指令详解
1. 数据复制指令
在许多计算机系统中, movsq 指令是将大量数据从一个位置复制到另一个位置最快的方法之一。不过,内存总线性能往往是数据复制速度的限制因素,因为 CPU 通常比内存总线快得多。所以,除非有特殊系统,否则编写复杂代码来优化内存到内存的数据传输可能是浪费时间。
另外,Intel 在后期处理器中改进了 movsx 指令的性能,使得 movsb 在复制相同字节数时与 movsw 、 movsd 和 movsq 一样高效。如果块移动的速度对你很重要,不妨尝试几种不同的方法,然后选择最快的(如果速度都相同,可能选择最简单的方法即可)。
下面是一个处理剩余 1 到 7 字节复制的代码示例:
lessThan8:
mov rcx, Length
and rcx, 111b ; Compute (Length mod 8)
jz divisibleBy8 ; Execute movsb only if # of bytes/8 <> 0
rep movsb ; Copy the remaining 1 to 7 bytes
divisibleBy8:
2. cmps 指令
cmps
超级会员免费看
订阅专栏 解锁全文
2570

被折叠的 条评论
为什么被折叠?



