当前位置: 首页 > news >正文

四川省建设厅中心网站哈尔滨seo优化公司

四川省建设厅中心网站,哈尔滨seo优化公司,建筑人才网官网首页,怎么做国外的网站吗目录 一、什么是链接脚本? 二、链接脚本的基本语法格式 1、常用命令 2、内置变量 三、链接脚本的简单案例 一、什么是链接脚本? 一段程序的编译需要经历四个阶段(预处理—编译—汇编—链接),而链接脚本管理的就是…

目录

一、什么是链接脚本?

二、链接脚本的基本语法格式

1、常用命令

2、内置变量

三、链接脚本的简单案例


一、什么是链接脚本?

一段程序的编译需要经历四个阶段(预处理—编译—汇编—链接),而链接脚本管理的就是其中的“链接”阶段。一段程序往往包含了变量、常量、数据(代码逻辑),他们属于不同的段:

  • .bss段:一个全局变量,没有被初始化 或者 被初始化为0。
  • .data:一个全局变量,非const类型,已被初始化(初始值必须是非0值)
  • .rodata段:read only data,如字符串常量、const修饰的变量都会被保存到该段
  • .text段:程序代码段,更进一步讲是存放处理器的机器指令。函数代码逻辑都会保存到该段

链接脚本决定了一个可执行程序的各个段的存储位置,相当于要给程序中的数据和变量进行分类,并确定每一类的存放位置

注意:实际涉及的段远不止这四个,这里只是列举了我们所熟知的段

二、链接脚本的基本语法格式

1、常用命令

命令说明举例
ENTRY(symbol)

这里的symbol指的是符号表中的符号。汇编阶段会生成符号表,符号表中的符号包括静态变量、全局变量、函数名等。

这是将某一个符号symbol的值设为入口地址(进程执行的第一条用户空间指令就会从此处开始执行)

ENTRY(_start)
OUTPUT_ARCH设置输出文件的目标平台架构OUTPUT_ARCH(arm)
SECTIONS告诉链接器如何把输入文件映射到内存指定位置(即设置各个段的位置)

SECTIONS

{

    ...

}

更多命令参考:lds文件命令

2、内置变量

.bss:表示bss段

.data:表示data段

.rodata:表示rodata段

.text:表示text段

. :定位器(暂不解释,下面示例说明的时候会更有体会)

三、链接脚本的简单案例

以下面这个链接脚本为例:

1、第 2 行

. 表示定位器,你可以理解为一个指针,此时指针指向的是 0x87800000的位置。

2、第 3 - 5 行

.text 开头,说明这里要设置的是 text 段相关的内容了。每一个文件都可能存在 .text段、.data 段 相关的内容,* 是通配符,表示所有文件;*(.text) 表示每个文件与 .text 段相关的内容。

这里想表达的意思是,把 obj 下的 start.o 和 其他所有输入文件与 .text 段相关的内容统一保存到DDR的 .text 段。

3、第 8 行

如果这里没有 ALIGN(4),根据.text 的理解就是,所有输入文件和 .rodata 段相关的内容都保存到DDR的 .rodata 段。

ALIGN(4) 的作用是地址对齐,即DDR 的 .rodata 段的起始地址必须是 4 的整数倍。如果没有ALIGN(4),rodata段是紧跟在 .text 的后面的。(假设 .text 段的大小是 0x1001)

.rodata :
{*(.rodata)
}

如果加了 ALIGN(4),此时 .rodata 的起始地址必须是 4 的整数倍。这么做的目的是提升内存访问效率,内存在访问该段的时候,没必要每个地址都去查,只要查 4 的整数倍的地址即可。

// 也可以是 ALIGN(8)
.rodata ALIGN(4) :
{*(.rodata)
}

4、第 9 行

参考第 8 行的解析

5、第 10 - 12 行

__bss_start 和 __bss_end 并非内置变量,而是自定义符号,以便用于保存 bss 段的起始位置和结束地址。前面提到 . 表示定位器,即便我们中间没有去手动管理,它也会自动跟随我们的操作进行移动。第 11 行可以参考第 8 行的解析。

问:为什么需要保存 .bss 段的起始位置和结束位置?

答:

        .bss 段是保存了被定义但是没有被初始化的变量,我们需要手动对 .bss 段的变量清零,为此我们就需要知道 .bss 段的起始位置和结束地址,以便于之后在 C文件或者汇编文件中直接引用

http://www.yayakq.cn/news/969142/

相关文章:

  • 广西营销型网站建设公司国内最好的crm软件
  • 国外自助建站免费建站平台如何在aws上创建wordpress
  • 在网站上怎么做推广上传网站安装教程视频教程
  • 主页网站建设建网站卖阀门
  • 哪里有建设网站的重庆建设摩托车价格
  • 免费企业建站系统排名唐山百度网站建设
  • 快速做课件的网站网站美工设计
  • 免费户型设计网站欧美电商网站
  • 广州城市建设网站郴州网站制作公司招聘
  • 建设个网站需要什么网站招聘顾问做啥的
  • 天津有做网站不错的吗wordpress 有市场吗
  • 银川网站建设联系电话网站建设 网页设计需要技能
  • 19网站建设企业所得税税收优惠
  • 网址创建东莞网站优化方式
  • 西安千叶网站建设网站空间购买价格
  • 好看的网站都找谁做的做网站要买什么类型云空间
  • 广州市外贸网站建设品牌隆尧建设局网站
  • 清远做网站的必须做网站等级保护
  • 网站开发招聘简历模板做网站head.htm
  • 网站建设与维护心得体会做我的世界的mod的网站
  • 四川省建设网塔吊证查询网站wordpress在文章中加背景图片
  • 做旅游网站一年能挣多少如何做网站微信支付
  • 搜索引擎中 哪些网站可以获得更好的排名手机网站 软件
  • 湖北在线网站建设有哪些可以推广的平台
  • 想自己做网站推广企业营销型网站建设
  • 沈阳网站制作列表网模拟登录 wordpress
  • 深圳如何建立公司自己网站给自己企业怎么做网站
  • 怎么下载建设银行网站网站开发软件 手机
  • 正规的徐州网站开发百度收录排名好的网站
  • phpcms 网站访问统计济南网站建设(选聚搜网络)