什么时候应该在x86汇编中使用MOVS而不是MOV?

时间:2016-03-28 19:02:06

标签: assembly optimization x86 mov

我在The Intel 64 and 32 Bit Architectures Software Developer Manual中遇到过这两个说明,我只是想知道两者之间的差异是什么,以及何时应该使用其中一个而不是另一个。

1 个答案:

答案 0 :(得分:2)

MOVS指令通常用于多次使用,因为它会自动递增或递减ediesi的值。递增或递减取决于Direction标志是清除还是设置。这可以与REP前缀一起使用,通过递减ecx直到它达到零来重复它。

根据我阅读的一些文档,movs指令的历史记录是一次一个字节地移动字符串,尽管你可以让它移动更大的项目(特别是单词和四字)。它会自动将ediesi更改为正确的数量,但它仍然只会将ecx减1,因此,例如,如果要移动unicode字符串,请小心。

http://x86.renejeschke.de/html/file_module_x86_id_279.html处的页面解释了rep前缀及其变体的确切条件。