GCC 汇编代码的问题(我是初学者.....)

发布于 2022-10-02 05:26:53 字数 2830 浏览 15 评论 0

0x80481a6 :     movl   $0x806f308,0xfffffff8(%ebp)
# 0xfffffff8(%ebp) 是 ebp-8 的意思吗?
0x80481ad :    movl   $0x0,0xfffffffc(%ebp)
# 0xfffffffc(%ebp) 是 ebp-c 的意思吗?

附:#include
int main ( int argc, char * argv[] )
{
    char * name[2];
    name[0] = "/bin/ksh";
    name[1] = NULL;
    execve( name[0], name, NULL );
    return 0;
}

Dump of assembler code for function main:
0x80481a0 :       pushl  %ebp
0x80481a1 :     movl   %esp,%ebp
0x80481a3 :     subl   $0x8,%esp
0x80481a6 :     movl   $0x806f308,0xfffffff8(%ebp)
0x80481ad :    movl   $0x0,0xfffffffc(%ebp)
0x80481b4 :    pushl  $0x0
0x80481b6 :    leal   0xfffffff8(%ebp),%eax
0x80481b9 :    pushl  %eax
0x80481ba :    movl   0xfffffff8(%ebp),%eax
0x80481bd :    pushl  %eax
0x80481be :    call   0x804b9b0 <__execve>;
0x80481c3 :    addl   $0xc,%esp
0x80481c6 :    xorl   %eax,%eax
0x80481c8 :    jmp    0x80481d0
0x80481ca :    leal   0x0(%esi),%esi
0x80481d0 :    leave
0x80481d1 :    ret
End of assembler dump.
(gdb) disas __execve <-- -- -- 输入
Dump of assembler code for function __execve:
0x804b9b0 <__execve>;:   pushl  %ebx
0x804b9b1 <__execve+1>;: movl   0x10(%esp,1),%edx
0x804b9b5 <__execve+5>;: movl   0xc(%esp,1),%ecx
0x804b9b9 <__execve+9>;: movl   0x8(%esp,1),%ebx
0x804b9bd <__execve+13>;:        movl   $0xb,%eax
0x804b9c2 <__execve+18>;:        int    $0x80
0x804b9c4 <__execve+20>;:        popl   %ebx
0x804b9c5 <__execve+21>;:        cmpl   $0xfffff001,%eax
0x804b9ca <__execve+26>;:        jae    0x804bcb0 <__syscall_error>;
0x804b9d0 <__execve+32>;:        ret
End of assembler dump.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文