程序入口

程序的入口

加载

linux可执行文件都是通过调用execve函数来调用加载器的.

加载器将可执行文件的代码和数据从磁盘拷贝到内存中, 然后通过第一条指令来查找程序运行的入口, 从而执行整个程序. 而将数据从磁盘复制到内存的过程就叫做加载.

程序的入口

通过从内核设置的第一条指令找到程序的入口, 一般gcc默认编译程序的入口是_libc_start_main这一个默认函数, 而默认函数的入口又是存放在段<_start>里面. _start函数调用系统启动函数, 它初始化环境, 调用用户层的main函数, 处理main函数的返回值, 最后将返回值返回给内核处理.

一个简单的代码

int main()
{
    }

执行

gcc main.c

在执行

objdump a.out -d 
# 如果适合看intel的汇编, 可加上 -M intel 即可

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值