我在英特尔64位和32位体系结构软件开发人员手册中遇到了这两个指令,只是想知道它们之间的区别,以及何时应该使用其中之一。
MOVS
指令通常被用于多次操作,因为它会自动递增或递减edi
和esi
的值。自增或自减取决于方向标志位是否被清除或设置。可以与REP
前缀一起使用,通过递减ecx
直到为零来重复执行。movs
指令的历史是将字符串以每次一个字节的方式进行移动,但也可以将其用于移动更大的项(特别是字和四字)。它会自动按正确的数量更改edi
和esi
,但它仍然只会将ecx
递减1,因此如果您要移动Unicode字符串,请小心。rep
前缀及其变体的确切条件。
mov
和movs
的作用(因为你已经在英特尔手册中读到了它们的作用),关于“何时”使用它们的问题就变成了边缘意见。 - Sep Roland