我在The Intel 64 and 32 Bit Architectures Software Developer Manual中遇到过这两个说明,我只是想知道两者之间的差异是什么,以及何时应该使用其中一个而不是另一个。
答案 0 :(得分:2)
MOVS
指令通常用于多次使用,因为它会自动递增或递减edi
和esi
的值。递增或递减取决于Direction标志是清除还是设置。这可以与REP
前缀一起使用,通过递减ecx
直到它达到零来重复它。
根据我阅读的一些文档,movs
指令的历史记录是一次一个字节地移动字符串,尽管你可以让它移动更大的项目(特别是单词和四字)。它会自动将edi
和esi
更改为正确的数量,但它仍然只会将ecx
减1,因此,例如,如果要移动unicode字符串,请小心。
http://x86.renejeschke.de/html/file_module_x86_id_279.html处的页面解释了rep
前缀及其变体的确切条件。