我最近偶然发现了以下汇编指令序列:
rep stos dword ptr [edi]
For ecx
重复,存储内容eax
到哪里edi
指向、递增或递减edi
(取决于方向标志)每次 4 个字节。通常,这用于memset
型操作。
通常,该指令简单地写成rep stosd
。经验丰富的汇编编码人员只要看到这一点就知道上面提到的所有细节。 :-)
ETA 的完整性(感谢 PhiS):每次迭代,ecx
减 1,当减到零时循环停止。为了stos
,你唯一会观察到的是ecx
最后被清除。但对于scas
或类似的,其中repz
/repnz
使用前缀,ecx
如果操作在耗尽之前停止,则可以大于零ecx
字节/字/任何东西。
在你问之前,scas
用于实现strchr
- 类型操作。 :-P
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)