我在 The Intel 64 and 32 Bit Architectures Software Developer Manual 中看到了这两个说明,我只是想知道两者之间的区别是什么,以及何时应该使用其中之一。
最佳答案
MOVS
指令通常用于多次使用,因为它会自动递增或递减 edi
和 esi
的值。递增或递减分别取决于方向标志是清零还是设置。这可以与 REP
前缀一起使用,通过递减 ecx
直到它达到零来使其重复。
根据我阅读的一些文档,movs
指令的历史是一次移动一个字节的字符串,尽管您可以让它移动更大的项目(特别是单词和四字)。它会自动将 edi
和 esi
更改为正确的数量,但它仍然只会将 ecx
减一,所以在移动时要小心例如,unicode 字符串。
页面位于 http://x86.renejeschke.de/html/file_module_x86_id_279.html解释了 rep
前缀及其变体的确切条件。
关于assembly - 什么时候应该在 x86 程序集中使用 MOVS 而不是 MOV?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269185/