最佳答案
rep; nop是什么意思?pause指令相同?rep nop(没有分号)一样吗?nop指令有什么区别?在对 另一个问题的注释进行了一些讨论之后,我意识到我不知道 rep; nop;在 x86(或 x86-64)汇编中意味着什么。而且我在网上也找不到合适的解释。
我知道 rep是一个前缀,意思是 cx1(或者至少曾经是,在旧的16位 x86汇编中)。根据这个 cx2,似乎 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,具有相同的注释。