内存管理01——链接脚本

新年的第一篇博文,先祝我工作顺利,万事如意!祝福大家的话就不赘述了。
在开始操作系统的内存管理相关内容前,首先来关注链接脚本,因为动态内存即堆区的地址是在链接脚本中分配的,知道了堆的起始地址和长度才能进行内存的分配和管理。

1. 链接脚本的作用是什么?

在这里插入图片描述在这里插入图片描述在这里插入图片描述
链接的作用就是把编译生成的多个目标文件(.o)合并起来,生成最后的可执行文件(.elf)。如上图中间的就是.o目标文件,最右的则是链接生成的.elf文件。除此之外,链接脚本还关注一个问题,就是生成的各个段被加载在内存的什么位置。
举个例子很容易就明白,下面是一个RISC-V代码的链接脚本:

OUTPUT_ARCH( "riscv" )	/* 代码采用的是RISC-V架构*/
ENTRY( _start )		/*代码入口符号是_start,就是汇编启动函数的符号*/
MEMORY
{
	/* 定义了一段起始地址为0x80000000,长度为128MB的内存区域,取名叫ram*/
	ram   (wxa!ri) : ORIGIN = 0x80000000, LENGTH = 128M
}
SECTIONS
{
	/* 所有输入文件中的.text段、.text.*段都合在一起,组成输出elf文件中的.text段;
	* 此外,定义了两个符号_text_start和_text_end ,注意符号'.'代表的是当前地址;
	* 生成的.text段被放在了ram这个内存区域中。
	*/
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值