凌阳教育的个人空间 https://blog.eetop.cn/204849 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

其他伪操作之四

已有 385 次阅读| 2016-1-29 17:06

(6)ALIGN

ALIGN伪操作通过添加补丁字节使当前位置满足一定的对齐方式。

语法格式

ALIGN   {expr{offset}}

其中:expr为指定对齐方式,可能的取值为2的次幂,如1248等。如果伪操作中没有指定expr,则默认当前位置对齐到下一个字边界处。不指定offset,表示将当前位置对齐到以expr为单位的起始位置,比如“ALIGN 8”表示将当前位置以2个字的方式对齐。如果指定offset,如“ALIGN     4,3则当原始位置在0x0001(字节),使用“ALIGN   4,3以后,当前位置到0x00070x0004+3),如图所示。


在下面的情况中,需要特定的地址对齐方式:

Thumb的伪指令ADR要求地址是字对齐的,而Thumb代码中地址标号可能不是字对齐的。这时就要使用伪操作“ALIGN       4使Thumb代码中的地址标号字对齐。

由于有些ARM处理器的Cache采用了其他对齐方式,如16字节的对齐方式,这时使用ALIGN伪操作指定合适的对齐方式可充分发挥该Cache的性能优势。

LDRDSTRD指令要求内存单元时8字节对齐的。这样在LDRD/STRD指令分配的内存单元前,要使用ALIGN 8实现8字节对齐方式。

地址标号通常是自身没有对齐要求,而在ARM代码中要求地址标号是字对齐的,在Thumb代码中要求半字对齐。这样需要使用合适的ALIGN时,伪操作中expr含义是不同的。例如:

AREA  cache, CODE,ALIGN=3                ;指定该代码的指令时8字节对齐的

MOV   PC,LR                                        ;程序跳转后变成4字节对齐,不再是8字节对齐

                                                               ;所以需要用ALIGN伪操作添加补丁字节,使当

                                                               ;前位置再次满足8字节对齐

ALIGN 8                                                  ;指定下面的指令时8字节对齐的

示例38   ALIGN伪操作举例

2字节数据放在同一个字的第1字节和第4字节中。

AREA           Example CODEREADONLY

DCB              0x11                                                 ;第1字节保存0x11

ALIGN          4,3                                             ;字对齐

DCB              0x24                                          ;第4字节保存0x24

示例39   ALIGN伪操作举例。

在下面的例子中通过ALIGN伪操作使程序中地址标号字对齐。

AREA           Example CODEREADONLY

Start                     LDR R6,=label

MOV             PC,LR

label              DCB       0x48                            ;本伪操作使字对齐被破坏

ALIGN                                                           ;重新使数据字对齐

凌阳教育,专注嵌入式人才培养多年,完善的培养方案,强大的师资,合理的课程安排,成功从小白蜕变为嵌入式工程师。想了解凌阳教育,或者获得更多嵌入式学习资料的免费下载,请点击www.sunplusedu.com访问凌阳教育官网


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 1

    粉丝
  • 0

    好友
  • 1

    获赞
  • 3

    评论
  • 3815

    访问数
关闭

站长推荐 上一条 /2 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-4-19 09:52 , Processed in 0.013653 second(s), 6 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部