汇编中AREA指令的使用

您所在的位置:网站首页 汇编EQU指令 汇编中AREA指令的使用

汇编中AREA指令的使用

2024-07-10 08:31| 来源: 网络整理| 查看: 265

AREA指令指示汇编程序汇编新的代码节或数据节。节是不可分的已命名独立代码或数据块,它们由链接器处理。有关详细信息,请参阅ELF节和AREA指令。

语法

    AREAsectionname{,ATtr}{,ATtr}...

其中:

   sectionname 是将要指定的节名。

可以为节选择任何名称。但是,以数字开始的名称必须包含在竖杠内,否则会产生一个缺失节名错误。 例如,|1_DATaArea|。有些名称是习惯性的名称。 例如,|.text| 用于表示由 C编译器生成的代码节,或以某种方式与 C 库关联的代码节。

    ATtr 是一个或多个用逗号分隔的节属性。有效的属性有:

   ALIGN=expression_r 缺省情况下,ELF节在四字节边界上对齐。expression_r可以取值0到31之间的任何整数。节在2^expression_r字节边界上对齐。例如,如果expression_r是10,则节在1KB 边界上对齐。这与 ALIGN 指令所指定的方式不同。请参阅ALIGN。

    注意:

不要对ARM代码节使用ALIGN=0或ALIGN=1。

不要对Thumb代码节使用ALIGN=0。

   ASSOC=section     section指定一个关联的ELF节。sectionname 必须包含在含有section 的任何链接中

   CODE 包含机器指令。READONLY 是缺省值。

CODEALIGN 当在节内的 ARM 或Thumb 指令后使用 ALIGN 指令时,该属性导致汇编程序插入 NOP 指令,除非 ALIGN 指令指定了其他填充方式。

COMDEF 是一个公共节定义。 此 ELF 节可以包含代码或数据。 它必须等同于其他源文件中拥有相同名称的任何其他节。

名称相同的同一 ELF 节在内存的同一节中被链接器覆盖。 如果有任何不同,则链接器会产生一个警告,并且不覆盖这些节。 请参阅《RealView 编译工具链接器和实用程序指南》中的第 3 章 使用基本链接器功能。

   COMGROUP=symbol_name 是一个公共组节。公共组中的所有节都是公共的。当对象被链接后,其他目标文件可能具有带有symbol_name 签名的一个GROUP。最终映像中只包含一个组。

   COMMON 是一个公共数据节。 不能在其中定义任何代码或数据。 它由链接器初始化为零。 名称相同的所有公共节在内存的同一节中被链接器覆盖。它们并不都必须具有相同大小。 链接器按每个名称的最大公共节的需要分配空间。

   DATA 包含数据,不包含指令。READWRITE 是缺省值。

   GROUP=symbol_name 是组的签名,它必须由源文件或源文件中包含的文件定义。 具有相同 symbol_name 签名的所有 AREAS 都被置于同一组中。组内的各节同时保存或显现。

NOALLOC 指示在目标系统上没有为此区域分配内存。

   NOINIT 指示数据节未初始化,或初始化为零。 它只包含空间保留指令 SPACE 或初始化值为零的DCB、DCD、DCDU、DCQ、DCQU、DCW 或 DCWU。 您可以在链接时决定某区域是未初始化还是初始化为零(请参阅《RealView 编译工具链接器和实用程序指南》中的第 3 章 使用基本链接器功能)。

   READONLY 指示不应向此节写入。 这是代码区域的缺省值。

   READWRITE 指示可以读写此节。 这是数据区域的缺省值。

    用法    使用AREA指令可将源文件细分为ELF节。 可以在多个 AREA 指令中使用相同的名称。 名称相同的所有区域都放在相同的 ELF节中。 只有特定名称的第一个 AREA 指令的属性才会被应用。通常应对代码和数据使用不同的 ELF 节。大型程序通常可方便地划分为多个代码节。 大量独立的数据集通常也最好放在不同的节中。局部标签的作用域是由 AREA指令定义的,并可选择用 ROUT 指令细分(请参阅局部标签和ROUT)。

   一组汇编代码必须至少有一个 AREA 指令。

    示例     下列示例定义名为Example 的只读代码节。

   AREA   Example,CODE,READONLY   ; Anexample code section.

           ; code



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3