永发信息网

C语言编译到机器码的过程?求详细解说,不胜感激

答案:2  悬赏:0  手机版
解决时间 2021-03-19 07:45
C语言编译到机器码的过程?求详细解说,不胜感激
最佳答案
从编码到生成可执行的binary文件是有好几个过程的:(默认已完成编码)
1, 预编译(预处理), 也就是替换工作, 先把代码中的宏做替换, 条件编译等会做处理,为编译做作准备;
2,编译,包括了语法的检查,汇编代码等中间代码的生成,代码优化,obj文件(也算是目标代码)的生成,已经是有机器码了;
3.库的合成,这个不一定有,不是必须的;
4.链接, 连接器会按照一定的规则,比如根据连接脚步,把code组织起来,生成elf文件(elf可能不是一个所有通用的格式),这个时候已经可以执行了,里面的可以执行的机器码;
5,裁剪, 可以把elf文件中的非必需的段 strip,生成一个更精简的elf文件;
6,binary的生成,objcopy命令可以把elf文件转换成binary文件,binary文件烧录到存储器中可以直击运行。
全部回答
这么说吧,一般人,你很难凭自己做到,源码,比如c源码,要先变为汇编代码(c和汇编有一个一一对应的表,数据很大),然后每一条汇编指令,又由很多段组成,比如条件什么的,和相应的寄存器的值。这些分段的值全部用0,1表示,一般汇编在arm下时32位的。而这32位的010101010.。。。就是机器码。所以你去试试。不过有一个反汇编软件可以将机器码变为汇编代码,和对应的源码。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
常来调料行在什么地方啊,我要过去处理事情
为什么实对称矩阵不一定是正定,所以不与单位
亚铁离子与硫离子还原性
脑疲劳的产生原因
2014外公去世老伴健在有一女一子抚恤金和丧葬
城固县龙头镇司法所这个地址在什么地方,我要
涂磊女儿近期照片
升级拖拉机怎么打
问IE里收藏夹的网址在C盘哪个文件夹里?
安庆916学校属于高消费的私立学校吗
建设工程内部承包合同一定无效吗
穿过地平线 的读后感500字
数码相机拍照 主体很黑
小李发糕(百老汇店)地址有知道的么?有点事想
杠杆平台按天收费,那收取时间是什么时候呢?
推荐资讯
亚历山大的恋人
如何制作酒店管理系统,,,,
怎么学会Java啊?
《羚羊木雕》中过渡段从内容上、从结构上个有
怎么举报银行分行副行长
七雄争霸怎么增加战斗力
HPb59-3的含铅量标准?
谁知道在成都市昭觉寺求个平安符多少钱,急
贰的五笔怎么打
Beatles的hey jude里面有一句You were made t
灵之羽体育用品在哪里啊,我有事要去这个地方
福顺鑫综合商店这个地址在什么地方,我要处理
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?