最佳答案
rep; nop
是什么意思?pause
指令相同?rep nop
(没有分号)一样吗?nop
指令有什么区别?在对 另一个问题的注释进行了一些讨论之后,我意识到我不知道 rep; nop;
在 x86(或 x86-64)汇编中意味着什么。而且我在网上也找不到合适的解释。
我知道 rep
是一个前缀,意思是 cx
1(或者至少曾经是,在旧的16位 x86汇编中)。根据这个 cx
2,似乎 rep
只能用于 movs
,stos
,cmps
,lods
,scas
(但是这个限制可能在新的处理器上被移除了)。因此,我认为 rep nop
(没有分号)将重复 nop
操作 cx
次。
然而,经过进一步的寻找,我变得更加困惑。似乎 rep; nop
和 pause
映射到完全相同的操作码,和 pause
有一点不同的行为,而不仅仅是 nop
。一些 2005年的旧邮件表达了不同的观点:
由于这些不同的意见,我不能理解正确的意思。
它正在 Linux 内核中使用(同时在 I386和 X86 _ 64上) ,以及这个注释: /* REP NOP (PAUSE) is a good thing to insert into busy-wait loops. */
它也是 正在使用 BerRTOS,具有相同的注释。