- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
x86 架构允许使用带或不带重复前缀的字符串指令。但如果没有重复前缀,他们似乎不会做任何有趣的事情。例如,没有 REP 的 MOVS 可以用简单的 MOV 替换。
是否有充分理由使用 MOVS(以及 STOS、SCAS、CMPS)而不使用 REP?或者这只是 x86 指令集的无用特性?
最佳答案
是的。不一定是故意的,但您可以使用它们进行某种优化。
例如,使用 movs
比使用 movs
更快(假设 rsi、rsi 指向正确的位置)
mov rax,[whatever1]
mov [whatever2],rax
对于其余的,我目前还不确定,但我想可以查找执行时间。递增/递减 rsi, rdi
实际上会产生副作用。
此外,在低级模式下打印 C 样式字符串(无格式或特殊字符;直接视频内存访问)如下:
; ...
_load_char:
lodsb
or al,al
jz _end_of_string
stosw
jmp _load_char
_end_of_string:
; ...
这里您需要检查加载的每个单个字符并确定是否到达字符串末尾,因此您不能使用rep
。尽管有人可能会认为 repz movsb
在这里不起作用,因为视频内存中的两个连续字节之一是特定字符的属性字节。在本例中,这是一个预期的功能。
关于assembly - 是否有任何理由使用 MOVS/CMPS/STOS/SCAS 而不使用重复前缀?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26513117/
我最近偶然发现了以下汇编指令序列: rep stos dword ptr [edi] 最佳答案 对于ecx重复,将eax的内容存储到edi指向的位置,递增或递减edi (取决于方向标志)每次 4
x86 架构允许使用带或不带重复前缀的字符串指令。但如果没有重复前缀,他们似乎不会做任何有趣的事情。例如,没有 REP 的 MOVS 可以用简单的 MOV 替换。 是否有充分理由使用 MOVS(以及
这个问题在这里已经有了答案: Can anyone help me interpret this MSVC debug-mode disassembly from a simple Hello Wo
好吧,我正在尝试使用 nasm -f elf Final.asm 在汇编中汇编一些代码: xor eax,eax push eax push dword(0x75792273) push dword(
我一直在调试 REP STOS DWORD PTR ES:[EDI] 一段时间 根据我的结论,它总是使用 ECX 作为计数器。EAX 作为将通过 EDI 复制然后附加 ECX 次的值所以在放入 EDI
我是一名优秀的程序员,十分优秀!