main函数之前做的工作
来源:互联网 发布:交易训练软件 编辑:程序博客网 时间:2024/06/04 09:06
程序在main函数之前做的一些工作
glibc的程序入口_start 。下面是i386的实现代码
_start:xor1 %ebp,%ebp //代码首先实现的是让ebp寄存器清零。这样做的目的是当前是程序的最外层函数(ebp=0)。
popl %esi //在调用_start 之前装载器把用户的参数和环境变量压到栈中。栈顶的元素为argc。接下来是argv和环境变量数组。这条指令是将argc存入esi
movl %ebp,%esp //将argv和环境变量数组的起始地址传给%ecx。
...
pushl %esp
pushl %edx
pushl $_libc_csu_fini
pushl $_libc_csu_init
pushl %ecx
pushl %esi
pushl main
call _libc_start_main
hlt
main是_libc_start_main的第一个参数。接下来的参数是argc,argv。
除了传递main函数指针还要有init(调用前的初始化工作),fini(结束后的收尾工作),rtld_fini(动态加载有关的收尾工作)
阅读全文
0 0
- main函数之前所做的工作
- main函数之前做的工作
- 执行main函数之前要做的工作
- main函数之前的工作
- main函数之前之后做了哪些工作
- 如果想在main函数之前或main函数之后做一些工作
- main函数之前做了什么?
- main函数之前做了什么?
- 进入main函数之前做了什么?
- CPU在上电后,进入操作系统的main()之前必须做什么工作
- 在main()之前,IAR都做了些什么工作
- main函数之前、之后调用的函数
- 程序在main函数之前做了什么
- 设置在main 之前运行的函数
- 1.1-main函数执行之前的过程
- 1.2-main函数执行之前的过程
- main函数执行之前的相关内容
- main函数之前执行
- sql server 关于表数据的插入
- 1101 第1课
- [cvpr2017]Joint Geometrical and Statistical Alignment for Visual Domain Adaptation
- 十进制大数的加法运算
- 避免函数中过深的耦合
- main函数之前做的工作
- Codeforces #430 dv.2 842A ,842B
- ggplot2之Layer—— geoms(二)
- hive笔记
- 校内赛 codeforces 827D【最小生成树】【树链剖分】 解题报告
- 编程获取linux的CPU使用率内存占用率
- Android 动画知识相关图谱
- 上台阶问题(跳法+路径)
- mybatis,初级入门