0
我有下面的代码片段,这导致我的问题。JE不在CMP后跳转
0x0000000000401556 <+56>: cmp $0x37,%edx
0x0000000000401559 <+59>: je 0x401560 <phase_5+66>
0x000000000040155b <+61>: callq 0x401a64 <do_not_come_here>
0x0000000000401560 <+66>: pop %rbx
0x0000000000401561 <+67>: retq
,这里是上线+59寄存器状态的一部分,右侧前升至或者不是。
rax 0x6 6
rbx 0x6d97c0 7182272
rcx 0x3 3
rdx 0x21 37
rsi 0x6d97c0 7182272
rdi 0x6d97c6 7182278
现在显然我们想跳到第66行并返回。但是,尽管
%rdx = 37 (hence %edx=37),
该代码不跳,并落入“do_not_come_here”。 我GDB报告,在跳跃的瞬间,已设置的标志是
eflags 0x297 [ CF PF AF SF IF ]
我甚至不具有ZF标志在那里。到底是怎么回事?请帮帮我。
订单在这里不是问题。当我的断点为<+56>时,下一步将导致我到<+59>等等。 – user3467433