首页 > 其他分享 >arm lds链接脚本的解释

arm lds链接脚本的解释

时间:2024-01-23 14:24:04浏览次数:30  
标签:mdata 链接 etext text bss lds 地址 arm

SECTIONS
{
.text 0×1000 : { *(.text) _etext = . ; }
.mdata 0×2000 : AT ( ADDR (.text) + SIZEOF (.text) )
{ _data = . ; *(.data); _edata = . ; }
.bss 0×3000 :
{ _bstart = . ; *(.bss) *(COMMON) ; _bend = . ;}
}

 

 

这段链接脚本是一个简单的Link Description Script (LDS)文件,通常用于描述如何将目标文件和库文件链接成一个可执行文件或共享库。这个脚本定义了三个不同的段(sections):.text.mdata 和 .bss

  1. *.text 0×1000 : { (.text) _etext = . ; }

    • .text 段是程序的代码段。
    • 0×1000 是该段的起始地址。
    • *(.text) 表示链接器需要收集所有的 .text 段。
    • _etext = . ; 是一个定义,将当前地址(.)赋值给 _etext,通常用于标记代码段的结束。
  2. .mdata 0×2000 : AT ( ADDR (.text) + SIZEOF (.text) )

    • .mdata 段通常用于存储已初始化的全局变量。
    • 0×2000 是该段的起始地址。
    • AT ( ADDR (.text) + SIZEOF (.text) ) 指定 .mdata 段应该放在 .text 段之后,并且与 .text 段对齐。
    • *(.data); 表示链接器需要收集所有的 .data 段。
    • _edata = . ; 是一个定义,将当前地址(.)赋值给 _edata,通常用于标记数据段的结束。
  3. **.bss 0×3000 : { _bstart = . ; (.bss) (COMMON) ; _bend = . ;}

    • .bss 段用于存储未初始化的全局变量。
    • 0×3000 是该段的起始地址。
    • *(.bss) 表示链接器需要收集所有的 .bss 段。
    • *(COMMON) 表示链接器需要收集所有的 COMMON 段。
    • _bstart = . ; 和 _bend = . ; 是两个定义,分别将当前地址(.)赋值给 _bstart 和 _bend,通常用于标记 BSS 段的开始和结束。

总的来说,这个链接脚本定义了程序的三个主要段:代码段、数据段和 BSS 段,并指定了它们的起始地址和如何收集这些段中的内容。

标签:mdata,链接,etext,text,bss,lds,地址,arm
From: https://www.cnblogs.com/zxdplay/p/17982346

相关文章

  • 无涯教程-CSS - 链接(Links)
    当无涯教程讨论CSS的伪类时,将重新访问相同的属性。:link    : 表示普通的、未被访问的链接。:visited  : 表示用户已访问的链接。:hover   : 表示鼠标指针位于链接的上方。:active  : 表示链接被点击的时刻。记住a:hover必须在CSS定义中的a:......
  • MySQL5.7麒麟系统ARM架构下离线安装,搭建主从集群
    一、检查本机操作系统#一定要注意查看本机的操作系统,是amd(x86)还是arm(aarch)架构$uname-aLinuxServer-58aa6d9e-9412-4ab6-b496-2adc0af4e9c84.19.90-17.5.ky10.aarch64#1SMPFriAug713:35:33CST2020aarch64aarch64aarch64GNU/Linux$cat/etc/os-releaseN......
  • 网站徽章shields制作教程
    ......
  • git ssh链接远程仓库
    一、参考博客——创建ssh链接——解决端口链接超时二、创建ssh链接2.1安装git链接:https://pan.baidu.com/s/19bjRZz_uhXW8HuVVNiLz4A?pwd=bxe0提取码:bxe0选择下载的地址,一路next,当然默认编辑器啥的配置,自己有需要就点击,但是最后一项带有new的next不建议勾选。——下载......
  • pycharm注释
    文件注释菜单->Settings->Editor->FileandCodeTempaltes->PythonScript->填写注释内容#!/usr/bin/envpython#-*-coding:utf-8-*-#@File:${NAME}.py#@Time:${DATE}${TIME}#@Author:作者名字#@Description:作者自己写函数注释菜......
  • docker构建跨平台应用(x86,arm)
    1.直接从官方仓库拉去指定平台的镜像dockerpull--platform=<plartform><image-name>:<tag>例:dockerpull--platform=arm64nginx:latest2.打包指定平台的镜像安装并使用 buildx 使用 builder 构建跨平台镜像现在一些准备工作已经就绪,我们终于可以使用......
  • 新品来袭,全国产ARM+FPGA--"RK3568J+Logos-2"工业核心板,让您的硬件设计“更简单”!
    如需选购,请登录创龙科技天猫旗舰店:tronlong.tmall.com!欢迎加入RK3568J技术交流群:567208221欢迎加入Logos-2技术交流群:311416997更多产品详情以及购买咨询可添加如下客服人员微信(即刻添加,马上咨询) 更多RK3568J+Logos-2产品资料可长按二维码识别下载  ......
  • ATF(Arm Trusted Firmware)
    ATF(ArmTrustedFirmware)是一个为ARMv8-A架构SoC提供的安全固件,其包含了多个组件和功能来确保系统的安全启动和运行时环境。以下是ATF中的一些主要功能和组件:1.**BL1(BootLoaderStage1)**:-这是ATF的第一阶段引导加载程序。-负责从非易失性存储器(如eMMC、UFS、NAND等)中......
  • HarmonyOS4.0 系列——06、渲染之条件渲染、循环渲染以及懒加载渲染
    HarmonyOS4.0系列——06、渲染之条件渲染、循环渲染以及懒加载渲染if/else:条件渲染ArkTS提供了渲染控制的能力。条件渲染可根据应用的不同状态,使用if、else和elseif渲染对应状态下的UI内容。写法和TS的一样,简单看一下即可@Entry@ComponentstructIfForEach{@State......
  • (powershell 7) 安装及 Pycharm 上的配置
    1.windows上更新powershell下载地址(此处需要爬下墙): https://github.com/PowerShell/PowerShell选择一个LTS版本直接手动安装,完成完成后,会自动添加到PATH中,如果没有,可以手动配置#打开powershell$PSVersionTable.PSVersion 2.Pycharm配置powershell Note......