Linux学习笔记(1)汇编的编译原理

汇编的编译原理:
1.预处理(预编译)--------cpp/gcc -E .c->.i
预编译主要处理源代码中以#开始的预编译指令
(1)将所有#define删除,并且展开所有宏定义
(2) 处理所有的条件预编译命令。
(3)处理#include,将被包含的文件插入到该预编译指令的位置。
(4) 删除所有的注释。
(5) 添加行号和文件名标识,以便于产生编译错误时报错。
(6)保留#pragma编译命令。
2.编译----------ccl/gcc -s/gcc -o .i->.s
编译过程是对词法分析、语法分析、以及语义分析、代码优化。
所有运算都在编译期间。
3.汇编---------as/gcc -c .s->.o
把指令转换成二进制
4.链接---------ld
链接的核心是处理符号表中的信息。
(1) 合并段和符号表
(2)确定段大小和起始偏移
(3) 符号解析(把und区数找到位置)在符号引用的地方找到符号定义的地方。
(4) 分配地址
(5) 符号重定位(.text)
在这里插入图片描述
链接时95%的错误为符号解析错误,链接器只关心全局符号。例如:static修饰表示为local链接器不关注,所以外部看不到
5.运行
(1)mmp映射
(2)只加载.text、.rodata、.data、.bss
(3)把入口地址写入pc寄存器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值