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

ARM-LDS链接文件

关键字

ALIGN

在链接脚本中,ALIGN关键字:ALIGN(X)中的X表示多少个字节对齐。

在汇编文件中,是伪操作 .align x 实现的:表示2的x次幂个字节对齐;

2.X的取值也是有讲究的,必须是2的整数次幂。例如:填写1,2,4,8,16,32,64,....

3.在链接脚本当中,ALIGN主要是在程序链接时用来实现数据边界对齐功能:

 什么是边界对齐,怎样对齐呢?
​首先解释什么是边界对齐:

当有一块数据需要存放时,需要一个起始地址(存储空间的上边界),然后放数据,

放完后会有一个结束地址(存储空间的下边界);

 然后是该怎样对齐?一般情况,上边界都是给定的,但是下边如何确定呢?

先看ALIGN(X)是多少字节对齐,再看上边界,然后就可以确定下边界。

 下边界的确定有以下三种情况:
​(1).如果字节对齐数是ALIGN(X);并且上边界地址小于等于X,
​则下边界为:基地址+X
​(2).如果字节对齐数是ALIGN(X);并且上边界地址大于X,则下边界为:

基地址+X*n ;n为多少呢?n=(上边界地址尾数%X的除数)+1

 什么是基地址?其实是指链接脚本中最开始指定的地址的尾数变为零,
​例如:0x33e0_0008  ->  基地址就是:0x33e0_0000
​0x33e0_00F5  ->  基地址就是:0x33e0_00F0

PS:

ALIGN(X)中的X最好是大于等于4,因为32位的处理器最小就是4字节对齐;

如果X赋值为1,2,则也是使用的默认4字节对齐。

SECTIONS

SECTIONS{*(.gnu.warning)*(.gnu.linkonce.t*)*(.ARM.extab* .gnu.linkonce.armextab.*)*(.ARM.exidx* .gnu.linkonce.armexidx.*)
}

.gun.warning

使用 GNU 工具链的您给自己的链接器警告

因此,当您尝试使用符号时,如果链接器看到名称与上述模式匹配的部分,则会发出相应的警告消息。

您可以将自己的链接器警告添加到源文件中:

linkwarn.c

void foo(void)
{
}
​
static const char foo_warning[] __attribute__((section(".gnu.warning.foo"))) ="foo is deprecated, please use the shiny new foobar function";

linkwarnmain.c

void foo(void);
​
int main()
{foo();
​return 0;
}

然后,当你编译时,你会得到一个警告:

$ gcc -Wall -c linkwarn.c $ gcc -Wall -o linkwarnmain linkwarnmain.c linkwarn.o /tmp/ccyHLTw6.o: In function `main': linkwarnmain.c:(.text+0x1d): warning: foo is deprecated, please use the shiny new foobar function

.gnu.linkonce.t*

.gnu.linkonce 被 gcc 用于模糊链接。请参阅中的文档
为什么存在模糊链接的 gcc 手册。当 GNU 链接器看到两个
输入具有相同名称的部分,并且名称以
“.gnu.linkonce.”,链接器将只保留一份副本并丢弃
其他。.gcc_except_table 也是输入节名,gcc 使用
用于在发生异常时展开堆栈的信息。

相关文章:

ARM-LDS链接文件

关键字 ALIGN 在链接脚本中,ALIGN关键字:ALIGN(X)中的X表示多少个字节对齐。 在汇编文件中,是伪操作 .align x 实现的:表示2的x次幂个字节对齐; 2.X的取值也是有讲究的,必须是2的整数次幂。例如&#xf…...

相机镜头景深

文章目录 定义影响因素实际应用特殊情况 参考:B站优致谱视觉 定义 景深是指在摄影机镜头或其他成像器前沿着能够取得清晰图像的成像器轴线所测定的物体距离范围。简单来说,就是在一张照片中,从前景到背景,能够保持清晰锐利的区域…...

Linux基础入门:从零开始掌握Linux命令行操作

🙋大家好!我是毛毛张! 🌈个人首页: 神马都会亿点点的毛毛张 🎈有没有觉得电影里的黑客🐒酷毙了?他们只用键盘⌨就能搞定一切。今天,毛毛张要带你们体验这种快感😀&…...

C++第13届蓝桥杯省b组习题笔记

1.九进制转十进制 九进制正整数 (2022)9转换成十进制等于多少&#xff1f; 第一位乘9的0次方&#xff0c;第二位乘9的1次方&#xff0c;第三位乘9的二次方以此类推 #include <iostream> using namespace std;int main() {// 请在此输入您的代码int t2022;int res0;int c…...

探索 Gaggol:理解 10^^^100 的宇宙级常数

一、常数概述&#xff1a; Gaggol 是一个极其巨大的数学常数&#xff0c;其数值表示为 10^^^100。这个常数是通过对数字 10 进行超递归幂运算得到的结果。 二、Gaggol 的定义&#xff1a; Gaggol 被定义为 10 的超多层超递归幂&#xff0c;即 10 被连续地提升到自身幂的层次达…...

python-leetcode 61.N皇后

题目&#xff1a; 按照国际象棋的规则&#xff0c;皇后可以攻击与之处在同一行或同一列或同一斜线上的棋子。 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上&#xff0c;并且使皇后彼此之间不能相互攻击 给你一个整数 n &#xff0c;返回所有不同的 n 皇后问题 的解…...

Centos8 系統Lnmp服務器環境搭建

Centos8 系統Lnmp服務器環境搭建 服務器環境 Centos8 [rootcentos8 ~]# uname -a Linux centos8 4.18.0-348.el8.x86_64 #1 SMP Tue Oct 19 15:14:17 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux# 更新軟件包列表 rootdebian:~# dnf update安裝信息 PHP 版本8.2.27 https://ww…...

产教融合|暴雨技术专家执裁江苏省职业院校技能大赛

3月28-30日&#xff0c;由江苏省教育厅、省发改委、省工信厅等15家单位主办的2025年江苏省职业院校技能大赛网络系统管理赛项如期举办。此次赛事吸引了全省52支参赛队伍、156名选手踊跃参与&#xff0c;参赛人数再创新高。 暴雨信息技术专家李明宇作为此赛项的往届省赛冠军&am…...

BUUCTF-web刷题篇(6)

15.PHP 知识点&#xff1a; ①__wakeup()//将在反序列化之后立即调用&#xff08;当反序列化时变量个数与实际不符是会绕过&#xff09;我们可以通过一个cve来绕过:CVE-2016-7124。将Object中表示数量的字段改成比实际字段大的值即可绕过wakeup函数。条件&#xff1a;PHP5<…...

AIP-203 域行为文档

编号203原文链接AIP-203: Field behavior documentation状态批准创建日期2018-07-17更新日期2018-07-17 在定义protocol buffer中的域时&#xff0c;按惯例要向用户解释域行为的某些方面&#xff08;例如域是必需的还是可选的&#xff09;。此外&#xff0c;让其他工具理解域行…...

在 Cloud Run 上使用 Gemini API 构建聊天应用

李升伟 编译 (&#x1f3a8; 封面由 Gemini 中的 Imagen 3 生成&#xff01;) 欢迎来到我的谷歌AI工具构建系列博客&#xff01;本文将带您创建一个由Gemini驱动并托管在Cloud Run上的简易聊天应用。如果您正在探索大语言模型或希望将AI集成到网页应用中&#xff0c;那么您来…...

周总结aa

上周学习了Java中有关字符串的内容&#xff0c;与其有关的类和方法 学习了static表示静态的相关方法和类的使用。 学习了继承(extends) 多态&#xff08;有继承关系&#xff0c;有父类引用指向子类对象&#xff09; 有关包的知识&#xff0c;final关键字的使用&#xff0c;及有…...

31天Python入门——第17天:初识面向对象

你好&#xff0c;我是安然无虞。 文章目录 面向对象编程1. 什么是面向对象2. 类(class)3. 类的实例关于self 4. 对象的初始化5. __str__6. 类之间的关系继承关系组合关系 7. 补充练习 面向对象编程 1. 什么是面向对象 面向对象编程是一种编程思想,它将现实世界的概念和关系映…...

计算机视觉准备八股中

一边记录一边看&#xff0c;这段实习跑路之前运行完3DGAN&#xff0c;弄完润了&#xff0c;现在开始记忆八股 1.CLIP模型的主要创新点&#xff1a; 图像和文本两种不同模态数据之间的深度融合、对比学习、自监督学习 2.等效步长是每一步操作步长的乘积 3.卷积层计算输入输出…...

【C语言】文件操作(2)

一、文件的随机读写 在前面我们学习了文件的顺序读写的函数&#xff0c;那么当我们要读取某个指定位置的内容的时候&#xff0c;是否只能顺序的读取到这个内容&#xff1f;还有在对文件进行输入的时候&#xff0c;需要对指定的位置进行写入&#xff0c;那么此时应该怎么办呢&a…...

CCCC天梯赛L1-094 剪切粘贴

题目链接&#xff1a; 字符串函数&#xff1a; 1、截取字符串&#xff1a; //起始位置为3,结束位置为5string s "aabcdefg";//下标从0开始 [从开始位置,结束位置]string sub s.substr(3,3);//输出cde, 有返回值string//并且原字符串不改变&#xff0c; s"aab…...

C语言:多线程

多线程概述 定义 多线程是指在一个程序中可以同时运行多个不同的执行路径&#xff08;线程&#xff09;&#xff0c;这些线程可以并发或并行执行。并发是指多个线程在宏观上同时执行&#xff0c;但在微观上可能是交替执行的&#xff1b;并行则是指多个线程真正地同时执行&…...

livekit ICE连接失败的一些总结

在使用livekit做的项目过程中碰到了一些ICE连接失败的问题&#xff0c; 一个时在同网段的局域网下 &#xff0c;livekti服务和客户端不能联通&#xff0c;后来发现是服务端是多网卡&#xff0c;通过网络抓包才知道服务端在stun binding的时候使用了错误的网卡&#xff0c;在co…...

Python神经网络1000个案例算法汇总

【2025最新版】Python神经网络优化1000个案例算法汇总(长期更新版) 本文聚焦神经网络、优化算法&#xff0c;神经网络改进&#xff0c;优化算法改进&#xff0c;优化算法优化神经网络权重、超参数等&#xff0c;现在只需订阅即可拥有&#xff0c;简直是人工智能初学者的天堂。…...

某地81栋危房自动化监测试点项目

1. 项目简介 房屋进入老龄化阶段后&#xff0c;结构安全风险越来越大。近10年来&#xff0c;每年都会产生房屋倒塌人员伤亡的重大安全事故。调研分析显示&#xff0c;老旧房屋结构安全风险管理的有效路径为&#xff0c;通过“人防技防”的组合模式&#xff0c;对房屋安全风险进…...

远程装个Jupyter-AI协作笔记本,Jupyter容器镜像版本怎么选?安装部署教程

通过Docker下载Jupyter镜像部署&#xff0c;输入jupyter会发现 有几个版本&#xff0c;不知道怎么选&#xff1f;这几个版本有什么差别&#xff1f; 常见版本有&#xff1a; jupyter/base-notebookjupyter/minimal-notebookjupyter/scipy-notebookjupyter/datascience-notebo…...

python文件的基本操作和文件读写

目录 文件的基本操作 文件读写 文件的基本操作 Python 中对文件的基本操作主要包括打开文件、读取文件、写入文件和关闭文件等操作。下面是一个简单的示例&#xff1a; 打开文件&#xff1a; file open(example.txt, r) # 使用 open() 函数打开一个名为 example.txt 的文…...

山东大学软件学院项目创新实训开发日志(4)之中医知识问答数据存储、功能结构、用户界面初步设计

目录 数据库设计&#xff1a; 功能设计&#xff1a; 用户界面: 数据库设计&#xff1a; --对话表 (1个对话包含多条消息) CREATE TABLE conversations ( conv_id VARCHAR(36) PRIMARY KEY, -- 对话ID user_id VARCHAR(36) NOT NULL, -- 所属用户 title VARCHAR(100), -- 对话…...

20.思科交换机二层链路聚合的详细配置命令解析

思科交换机二层链路聚合的详细配置命令解析 一、PAgP协议的配置SW1的配置SW2的配置二、LACP标准协议三、配置聚合组的带宽和速率四、确保所有接口的双工模式和速率一致五、故障排除和监控在Cisco设备上配置链路聚合(也称为端口通道或EtherChannel)可以增强网络连接的带宽和可…...

【FreeRtos】随手记录想法和DeepSeek的交流

纯记录个人RTOS学习过程和DeepSeek的交流&#xff0c;或记录一些学习过程中奇怪的想法&#xff08;也会喂给deepseek哈哈&#xff09; 2025/3/31 1. prvCreateTask在干啥&#xff1f; Question prvTaskCreate这个函数做了什么&#xff1a;分配内存&#xff0c;首先会判断栈…...

【多线程】单例模式和阻塞队列

目录 一.单例模式 1. 饿汉模式 2. 懒汉模式 二.阻塞队列 1. 阻塞队列的概念 2. BlockingQueue接口 3.生产者-消费者模型 4.模拟生产者-消费者模型 一.单例模式 单例模式&#xff08;Singleton Pattern&#xff09;是一种常用的软件设计模式&#xff0c;其核心思想是确保…...

Qt5.14.2+Cmake使用mingw64位编译opencv4.5成功图文教程

​ 一、下载安装相关编译环境软件 1.1 Python3.8&#xff1a;安装路径:C:\Users\Administrator\AppData\Local\Programs\Python\Python38-32 安装包&#xff1a;python3.8.exe 1.2 QT5.14.2&#xff1a;安装路径:C:\Qt\Qt5.14.2 1.3 opencv4.5&#xff1a;解压路径D:\o…...

Transformer习题

(1) 自注意力机制的特点&#xff1a; 并行计算&#xff1a;可同时处理序列中所有位置的关联&#xff0c;避免RNN的时序依赖问题。长距离依赖建模&#xff1a;直接捕捉序列中任意两个元素的关系&#xff0c;不受距离限制。动态权重分配&#xff1a;通过查询&#xff08;Query&a…...

Mamba4D阅读

CVPR 2025 创新 基于transformer的4D主干由于其二次复杂度而通常存在较大的计算成本&#xff0c;特别是对于长视频序列。 开发了帧内空间Mamba模块&#xff0c;建立时空相关性。 GPU占用和速度很有优势。 代码还没发。 Pipeline 输入点云序列&#xff0c;根据超参数构建点管…...

uWebSockets开发入门

一、常用C++ WebSocket开源库 一些常用的 C++ WebSocket 开源库,它们支持 WebSocket 协议的实现,适用于客户端或服务器端开发。 1. Boost.Beast (推荐) 特点:基于 Boost.Asio 的高性能库,支持 HTTP/WebSocket,属于 Boost 官方库的一部分,稳定且跨平台。 适用场景:需要高…...