.L10:
leal (%rsi,%rsi,4), %edx
movsbl %al,%eax
addq $1, %rdi
leal -48(%rax,%rdx,2), %esi
je .L3
在上面cmp
之前只有je
,它在这里是如何运作的?
答案 0 :(得分:10)
je
将跳转为ZF = 1
。add
修改了ZF
。lea
,movsb
不会影响任何旗帜。保持Intel 64 and IA32 Architecture Developer's Manual。您可以在manual Volume 2
中找到Intel 64和IA32架构的所有指令详细信息答案 1 :(得分:4)
je
跳转。 ZF标志的值由修改它的先前(例如cmp
)操作设置。
由于lea
和movsbl
都不会修改ZF标记,但add
会修改(比较Intel Developer's Manual,3-36),je
会跳转到{{ 1}} iff .L3
为零。
答案 2 :(得分:0)
前面的指令设置处理器状态标志。即使未执行cmp
,每个条件跳转都会检查某个标志。如果设置了零标志,我相信je
会执行。