我是组装新手。除了正在调试的实际代码之外,有没有办法在 GDB 中执行计算?例如,我正在使用 Linux IA-32 程序集(AT&T 语法)逐步执行以下操作:
;$esi is 0xbffff0a8 which refers to 1 after this command. $eax is 2
0x08048cd5 <+42>: lea -0x20(%ebp),%esi
;$eax=ebx=2 after this instruction
0x08048cd8 <+45>: mov %ebx,%eax
;$eax equals 2 after this instruction
0x08048cda <+47>: add -0x4(%esi,%ebx,4),%eax
我只是没有看到 $eax 如何以 2 结束。我可以在 gdb 中发出如下指令:-0x4(%esi,%ebx,4) 并分析结果吗?
据我了解,$ebx 乘以 4 得到 8。将其添加到 $esi 得到 9。然后减去 -4 得到 5。然后将 5 添加到 $eax 中,即 2 得到 7。而不是 $ eax 为 2。