我确实有这段代码来确定执行了多少条指令。
movl 10, %eax
movl 0, %ecx
ciclo:
addl %eax, %ecx
decl %eax
jnz ciclo
在其他示例中,我发现它更容易,因为在循环结束时有cmpl
。但在这种情况下,我怎么知道执行了多少指令?
答案 0 :(得分:1)
条件跳转只检查标志的状态,他们不关心它们是如何设置的。 CMP
设置了标志,但是其他一些指令也是如此。这全部写在指令集参考中。 DEC
设置JNZ
检查结果是否为零的零标志(这并不奇怪)。因此,循环运行10次,因为JNZ
重复,而标志不设置。
您也可以在调试器中运行它并自己查看:)