LOOP,LOOPE,LOOPNE?

nun*_*nos 9 x86 assembly loops

什么是汇编指令之间的区别LOOP,LOOPE以及LOOPNE

sha*_*oth 20

LOOP递减ecx并检查ecx是否不为零,如果满足该条件则跳转到指定的标签,否则会掉头.

LOOPE递减ecx并检查ecx不为零 ZF已设置 - 如果满足这些条件,它会跳转到标签,否则会掉头.

LOOPNE与LOOPE相同,只是它要求ZF不设置(即为零)以进行跳转.

  • 另外没有问我想指出所有LOOP指令都比DEC ECX/JNZ指令快得多.这是因为LOOP现在应当仅用于用于硬件驱动器等的延迟校准循环. (9认同)
  • @JanusTroelsen,从80486开始变慢.在最新的处理器上,**很慢**.资料来源:http://www.agner.org/optimize/ manual#2. (2认同)

Mat*_*nes 5

时间到了谷歌图书参考

编辑:来自链接的概要:LOOPE和LOOPNE本质上是LOOP指令,另外还有一个检查.LOOPE循环"而零标志",意味着只要零标志ZF为1并且未达到增量就会循环,并且LOOPNE循环"而不是零标志",这意味着只要ZF为零且它继续循环,没有达到增量.请记住,这些说明都不会影响ZF的状态.

  • 我认为最好不仅提供链接,而且在链接失效时引用来源中的相关材料。 (2认同)