Assembly CMP后组件未跳转
我有下面的代码片段,这导致了我的问题Assembly CMP后组件未跳转,assembly,gdb,Assembly,Gdb,我有下面的代码片段,这导致了我的问题 0x0000000000401556 <+56>: cmp $0x37,%edx 0x0000000000401559 <+59>: je 0x401560 <phase_5+66> 0x000000000040155b <+61>: callq 0x401a64 <do_not_come_here> 0x0000000000401560 <+66>: p
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
现在我们显然想跳到+66行并返回。然而,尽管
%rdx = 37 (hence %edx=37),
代码没有跳转并落入“不要来这里”。
我的gdb报告说,在跳转时,设置的标志是
eflags 0x297 [ CF PF AF SF IF ]
我甚至没有ZF标志在那里。发生了什么事?请帮帮我。哎呀。我的错误$0x37与37不同,我完全被愚弄了。这里的顺序不是问题。当我在下一步中有断点时,会引导我进入等等。
eflags 0x297 [ CF PF AF SF IF ]