在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
芯片精品文章合集(500篇!) 创芯人才网--重磅上线啦!
查看: 1549|回复: 0

[资料] 其他伪操作之四

[复制链接]
发表于 2016-1-29 17:12:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x

(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),如图所示。
QQ截图20160129165132.png

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

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           ExampleCODEREADONLY

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

ALIGN          4,3                                             ;字对齐

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

示例39   ALIGN伪操作举例。

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

AREA           ExampleCODEREADONLY

Start                     LDRR6,=label

MOV             PC,LR

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

ALIGN                                                           ;重新使数据字对齐

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

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

本版积分规则

关闭

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


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

GMT+8, 2025-1-10 20:21 , Processed in 0.013348 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表