C语言编译到机器码的过程?求详细解说,不胜感激
答案:2 悬赏:0 手机版
解决时间 2021-03-19 07:45
- 提问者网友:趣果有间
- 2021-03-18 23:38
C语言编译到机器码的过程?求详细解说,不胜感激
最佳答案
- 五星知识达人网友:鸽屿
- 2021-03-19 00:48
从编码到生成可执行的binary文件是有好几个过程的:(默认已完成编码)
1, 预编译(预处理), 也就是替换工作, 先把代码中的宏做替换, 条件编译等会做处理,为编译做作准备;
2,编译,包括了语法的检查,汇编代码等中间代码的生成,代码优化,obj文件(也算是目标代码)的生成,已经是有机器码了;
3.库的合成,这个不一定有,不是必须的;
4.链接, 连接器会按照一定的规则,比如根据连接脚步,把code组织起来,生成elf文件(elf可能不是一个所有通用的格式),这个时候已经可以执行了,里面的可以执行的机器码;
5,裁剪, 可以把elf文件中的非必需的段 strip,生成一个更精简的elf文件;
6,binary的生成,objcopy命令可以把elf文件转换成binary文件,binary文件烧录到存储器中可以直击运行。
1, 预编译(预处理), 也就是替换工作, 先把代码中的宏做替换, 条件编译等会做处理,为编译做作准备;
2,编译,包括了语法的检查,汇编代码等中间代码的生成,代码优化,obj文件(也算是目标代码)的生成,已经是有机器码了;
3.库的合成,这个不一定有,不是必须的;
4.链接, 连接器会按照一定的规则,比如根据连接脚步,把code组织起来,生成elf文件(elf可能不是一个所有通用的格式),这个时候已经可以执行了,里面的可以执行的机器码;
5,裁剪, 可以把elf文件中的非必需的段 strip,生成一个更精简的elf文件;
6,binary的生成,objcopy命令可以把elf文件转换成binary文件,binary文件烧录到存储器中可以直击运行。
全部回答
- 1楼网友:蓝房子
- 2021-03-19 00:55
这么说吧,一般人,你很难凭自己做到,源码,比如c源码,要先变为汇编代码(c和汇编有一个一一对应的表,数据很大),然后每一条汇编指令,又由很多段组成,比如条件什么的,和相应的寄存器的值。这些分段的值全部用0,1表示,一般汇编在arm下时32位的。而这32位的010101010.。。。就是机器码。所以你去试试。不过有一个反汇编软件可以将机器码变为汇编代码,和对应的源码。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯