汇编cmp如何检查它比较的值?

时间:2013-01-25 07:48:06

标签: c linux assembly gdb

我从objdump得到以下内容。这是由gcc为IA32编译的C代码。

08048e9a <my_func>:
8048e9a:    55                      push   %ebp
8048e9b:    89 e5                   mov    %esp,%ebp
8048e9d:    83 ec 48                sub    $0x48,%esp
8048ea0:    89 5d f4                mov    %ebx,-0xc(%ebp)
8048ea3:    89 75 f8                mov    %esi,-0x8(%ebp)
8048ea6:    89 7d fc                mov    %edi,-0x4(%ebp)
8048ea9:    8d 5d d0                lea    -0x30(%ebp),%ebx
8048eac:    89 5c 24 04             mov    %ebx,0x4(%esp)
8048eb0:    8b 45 08                mov    0x8(%ebp),%eax
8048eb3:    89 04 24                mov    %eax,(%esp)
8048eb6:    e8 52 04 00 00          call   804930d <read_num>
8048ebb:    8d 7d dc                lea    -0x24(%ebp),%edi
8048ebe:    be 00 00 00 00          mov    $0x0,%esi
8048ec3:    8b 03                   mov    (%ebx),%eax
8048ec5:    3b 43 0c                cmp    0xc(%ebx),%eax
8048ec8:    74 05                   je     8048ecf <my_func+0x35>
8048eca:    e8 fc 03 00 00          call   80492cb <other_func>
8048ecf:    03 33                   add    (%ebx),%esi

我有兴趣找到在线8048ec5上比较的值在gdb中,我可以走到这一行,我可以从%eax读到info registers,但我怎么读0xc(%ebx)?这意味着0xc偏离了%ebx0xc + %ebx

1 个答案:

答案 0 :(得分:2)

它指的是内存中地址%ebx + 0xc的32位值。