GCC 汇编代码的问题(我是初学者.....)
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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论