首页 文章

“rep stos”x86汇编指令序列有什么作用?

提问于
浏览
34

我最近偶然发现了以下汇编指令序列:

rep stos    dword ptr [edi]

1 回答

  • 55

    对于 ecx 重复,将 eax 的内容存储到 edi 指向的位置,每次递增或递减 edi (取决于方向标志)4个字节 . 通常,这用于 memset 类型的操作 .

    通常,该指令只是写成 rep stosd . 经验丰富的装配编码人员只要看到这一点就知道上面提到的所有细节 . :-)


    完整性的ETA(感谢PhiS):每次迭代, ecx 递减1,循环在达到零时停止 . 对于 stos ,您唯一要注意的是 ecx 在结束时被清除 . 但是,对于使用 repz / repnz 前缀的 scas 等,如果操作在耗尽 ecx bytes / words / whatevers之前停止,则 ecx 可以大于零 .

    在您提出要求之前, scas 用于实现 strchr 类型的操作 . :-P

相关问题