嵌入式之家

 找回密码
 现在注册

QQ登录

只需一步,快速开始

搜索
热搜: ARM cortex
查看: 4719|回复: 0

ARM汇编伪指令:AREA

[复制链接]
  • TA的每日心情
    开心
    2020-6-18 22:00
  • 签到天数: 1 天

    [LV.1]初来乍到

    101

    主题

    192

    帖子

    1645

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    1645
    发表于 2017-1-24 12:55:33 | 显示全部楼层 |阅读模式
    (1)AREA的作用是定义一个代码段或数据段。由汇编器处理。

    (2)语法:
    AREA sectionname{,attr}{,attr}...
    sectionname:是将要制定的段名,可以为段选择任何段名。但是,以一个数字开始的名称必须包含在竖杠号内,否则会产生一个缺失段名错误。例如,|1_DataArea|。
    有些名称是习惯性的名称。例如,|.text| 用于表示由 C 编译程序产生的代码段,或用于以某种方式与 C 库关联的代码段。

    attr:是一个或多个用逗号分隔的段属性。有效的属性是:  
    ALIGN=expression  
    默认情况下,ELF 段在四字节边界上对齐。expression 可以拥有 0 到 31 的任何整数。段在 2expression 字节边界上对齐。例如,如果 expression 是 10,则段是在 1KB 边界上对齐。这与 ALIGN 命令所指定的方式并不相同。  
    ASSOC=section  
    section 指定一个关联的 ELF 段。sectionname必须包含在含有 section 的任何链接中。  
    CODE        
    包含机器指令。READONLY 是默认值。  
    COMDEF     
    是一个公共段定义。这是包含代码或数据的 ELF 段。其必须等同于与其它源文件中拥有相同名称的任何其它段须是同一段。拥有相同名称的同一 ELF 段在存储器的相同段中被链接程序覆盖。如果有任何段不同,则链接程序产生一个警告,并且不覆盖这些段。请参阅RealView 编译工具 2.0 版链接程序和实用程序指南 中的链接程序 一章。  
    COMMON
    是公共数据段。不能在其中定义任何代码或数据。其由 链接程序初始化为零。拥有相同名称的所有公共段在存 储器的相同段中被链接程序覆盖。它们并不都需要具有 相同的大小。链接程序按每个名称的最大公共段的需要 分配空间。  
    DATA   
    包含数据但不含指令。READWRITE 是默认值。  
    NOALLOC  
    表示在目标系统上没有为此 AREA 分配存储器。  
    NOINIT   
    表示数据段是未初始化的或初始化为零。其只包含零初始化的空间保留命令 SPACE 或 DCB、DCD、DCDU、DCQ、DCQU、DCW 或 DCWU。可以决定在链接时 AREA 是未初始化的还是零初始化的(请参阅RealView 编译工具 2.0 版链接程序和实用程序指南 中的链接程序 一章)。  
    READONLY   
    表示不能写到此段中。这是代码区域的默认情况。  
    READWRITE  
    表示可以读和写此段。这是数据区域的默认情况

    (3)例如:
    AREA    STACK, NOINIT, READWRITE, ALIGN=3
    表示,定义一个数据段,数据段名为STACK,不初始化,具有读写读写属性,8字节对齐



    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 现在注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|嵌入式之家 ( 京ICP备14038168号-1 )

    GMT+8, 2024-5-11 01:53 , Processed in 0.022150 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2020, Tencent Cloud.

    快速回复 返回顶部 返回列表