首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

LD和NOLOAD部分:了解奇怪的LMA值

LD和NOLOAD部分是与链接器(linker)相关的概念。

链接器是编译过程中的最后一步,它将编译器生成的目标文件(object file)和库文件(library file)合并成最终的可执行文件(executable file)。在链接过程中,目标文件中的符号(symbol)会被解析为实际的地址,而LD和NOLOAD部分就是链接器中用来控制符号地址分配的一些特殊部分。

LD(Loadable Data)部分是指包含了可加载数据段(loadable data segment)的部分。可加载数据段是指在程序运行时需要被加载到内存中的数据,例如全局变量、静态变量等。LD部分的作用是将这些数据段分配到内存的合适位置,并为它们分配实际的地址。

NOLOAD部分是指包含了不需要被加载到内存中的数据段的部分。这些数据段通常是一些只读数据或者只在链接过程中使用的临时数据。NOLOAD部分的存在可以减少可执行文件的大小,提高程序的运行效率。

LMA(Load Memory Address)值是指链接器为目标文件中的符号分配的实际内存地址。在链接过程中,链接器会根据符号的类型和链接脚本(linker script)中的规则,为每个符号分配一个唯一的LMA值。LMA值决定了符号在内存中的位置,程序在运行时可以通过LMA值来访问和修改对应的数据。

总结:

  • LD部分是链接器中用来控制可加载数据段地址分配的部分,负责将数据段分配到内存中的合适位置。
  • NOLOAD部分是链接器中用来控制不需要加载到内存中的数据段的部分,可以减少可执行文件的大小。
  • LMA值是链接器为目标文件中的符号分配的实际内存地址,决定了符号在内存中的位置。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

  • 用GCC开发STM32入门二

    之前从网上下载了一份用GCC开发stm32的程序,也是用的stm32的库函数编程,启动文件是startup_stm32f10x_hd.s,链接脚本文件是从gcc_ride7中拷贝出的stm32f10x_flash_extsram.ld,做了些简单修改。但是编译了一下,出现了一大堆的错误。于是干脆不用这些文件,从网上查资料,自己写启动文件和链接脚本。仔细看了下startup_stm32f10x_hd.s,这个文件,发现也很简单,无非是定义了一些中断向量表和完成数据段的搬移和.bss段的清零等工作,并把程序跳转到main()函数。然后链接脚本文件告知链接器,把所有目标文件相应的段连接到一起,并把目标文件中的“变量地址”“函数地址”重定位至正确的地址空间; 编写前需要知道C程序编译后的典型内存布局 ,单片机的启动流程以及链接脚本文件的作用和编写等知识。部分知识,摘自网络。

    02

    蓝桥杯 历届试题 连号区间数-------------C语言—菜鸟级

    /*问题描述 小明这些天一直在思考这样一个奇怪而有趣的问题: 在1~N的某个全排列中有多少个连号区间呢?这里所说的连号区间的定义是: 如果区间[L, R] 里的所有元素(即此排列的第L个到第R个元素)递增排序后能得到一个长度为R-L+1的“连续”数列,则称这个区间连号区间。 当N很小的时候,小明可以很快地算出答案,但是当N变大的时候,问题就不是那么简单了,现在小明需要你的帮助。 输入格式 第一行是一个正整数N (1 <= N <= 50000), 表示全排列的规模。 第二行是N个不同的数字Pi(1 <= Pi <= N), 表示这N个数字的某一全排列。 输出格式 输出一个整数,表示不同连号区间的数目。 样例输入1 4 3 2 4 1 样例输出1 7 样例输入2 5 3 4 2 5 1 样例输出2 9 思路: 暴力枚举

    02

    Nat. Mach. Intell. | 多模态补全和特征的联合变分自编码器

    今天为大家介绍的是来自威斯康星大学麦迪逊分校团队的一篇关于单细胞多模态的论文。单细胞多模态数据能够测量细胞的各种特征,从而深入了解细胞和分子机制。然而,多模态数据的生成仍然昂贵且具有挑战性,同时缺失模态也经常发生。最近,机器学习方法已经被开发用于数据补全,但通常需要完全匹配的多模态数据才能学习共同的潜在特征,可能缺乏模态特异性。为了解决这些问题,作者开发了一个机器学习模型,名为JAMIE。JAMIE接受单细胞多模态数据,这些数据可以在模态之间部分匹配样本。变分自编码器学习每个模态的潜在特征。然后,跨模态匹配样本的特征被聚合以识别联合的跨模态潜在特征,然后进行重构。为了进行跨模态补全,可以使用一个模态的潜在特征和另一个模态的解码器。为了提高解释性,作者使用Shapley值来确定跨模态补全和已知样本标签的输入特征的优先级。

    02

    常用的限流框架,你都会用吗?

    作为应对高并发的手段之一,限流并不是一个新鲜的话题了。从Guava的Ratelimiter到Hystrix,以及Sentinel都可作为限流的工具。 自适应限流 一般的限流常常需要指定一个固定值(qps)作为限流开关的阈值,这个值一是靠经验判断,二是靠通过大量的测试数据得出。但这个阈值,在流量激增、系统自动伸缩或者某某commit了一段有毒代码后就有可能变得不那么合适了。并且一般业务方也不太能够正确评估自己的容量,去设置一个合适的限流阈值。 而此时自适应限流就是解决这样的问题的,限流阈值不需要手动指定,也不需要去预估系统的容量,并且阈值能够随着系统相关指标变化而变化。 自适应限流算法借鉴了TCP拥塞算法,根据各种指标预估限流的阈值,并且不断调整。大致获得的效果如下:

    04
    领券