RealView 编译工具 《汇编器指南》 ALIGN
来源:互联网 发布:二维树状数组 编辑:程序博客网 时间:2024/06/05 01:10
RealView 编译工具 《汇编器指南》4.0 版Home > 指令参考 > 其他指令 > ALIGN7.8.1. ALIGN
ALIGN
指令通过用零或NOP
指令进行填充将当前位置对齐到指定边界。语法
ALIGN
{expr
{,offset{,pad
{,padsize
}}}}其中:
expr
是一个数值表达式,取值为 20 到 231 范围内的 2 的任何次幂
offset
可以是任何数值表达式
pad
可以是任何数值表达式
padsize
可为 1、2 或 4。
操作
使当前位置对齐到如下形式的下一地址:
offset
+n
*expr
如果未指定
,则
expr
ALIGN
会将当前位置设置到下一个字(四字节)边界处。 前一个位置和当前新位置之间的未用空间用以下内容填充:
- 如果指定了
,则用
pad
的副本填充
pad
- 满足以下所有条件时,用
NOP
指令填充:
未指定
pad
ARM 或 Thumb 指令后面是
ALIGN
指令在当前节中,
AREA
指令设置了CODEALIGN
属性其他情况用零填充。
根据
值的情况,
padsize
将被分别视为一个字节、半字或字。 如果未指定
pad
,则
padsize
在数据节中缺省为字节,在 Thumb 代码中缺省为半字,在 ARM 代码中缺省为字。
pad
用法
使用
ALIGN
可确保数据和代码对齐到适当的边界上。 在下列情况下,这通常是必须的:
ADR
Thumb 伪指令只能加载字对齐的地址,但 Thumb 代码内的标签可能不是字对齐的。 使用ALIGN 4
可确保 Thumb 代码内的地址是四字节对齐的。使用
ALIGN
可利用有些 ARM 处理器上的高速缓存。 例如,ARM940T 带有一个含 16 字节行的高速缓存。 使用ALIGN 16
可在 16 字节边界上对齐函数入口点,并使高速缓存的效率最高。
LDRD
和STRD
双字数据传送必须是八字节对齐的。 如果要用LDRD
或STRD
访问数据,则应在内存分配指令(如DCQ
)之前使用ALIGN 8
(请参阅数据定义指令)。只有标签的行可以是任意对齐的。 随后的 ARM 代码是字对齐的(Thumb 代码是半字对齐的)。 因此标签不能正确寻址代码。 在标签前使用
ALIGN 4
(或对 Thumb 代码使用ALIGN 2
)。对齐相对于例程所在的 ELF 节的起始位置。 节必须对齐到相同的或更近似的边界上。
AREA
指令中的ALIGN
属性以不同方式指定(请参阅AREA和示例)。示例
AREA cacheable, CODE, ALIGN=3rout1 ; code ; aligned on 8-byte boundary ; code MOV pc,lr ; aligned only on 4-byte boundary ALIGN 8 ; now aligned on 8-byte boundaryrout2 ; codeAREA OffsetExample, CODE
DCB 1 ; This example places the two ALIGN 4,3 ; bytes in the first and fourth DCB 1 ; bytes of the same word.AREA Example, CODE, READONLY
start LDR r6,=label1 ; code MOV pc,lrlabel1 DCB 1 ; pc now misaligned ALIGN ; ensures that subroutine1 addressessubroutine1 ; the following instruction. MOV r5,#0x5
- RealView 编译工具 《汇编器指南》 ALIGN
- RealView® 编译工具 汇编器指南
- RealView 编译工具 《汇编器指南》 REQUIRE8 和 PRESERVE8
- RealView 编译工具 库和浮点支持指南
- ARM - ADS, RealView 编译工具(节选1)
- ARM - ADS, RealView 编译工具(节选2)
- ARM RealView® 编译工具映像结构(分散加载)
- RealView 编译工具的几个特殊命令函数
- RealView MDK开发工具
- RealView MDK开发工具
- MDK realview-ARM9的led_blink汇编小结
- 关于keil编译cortex-m3纯汇编时为什么问题使用align地址问题
- ARM汇编align伪指令
- arm汇编align伪指令
- RealView MDK开发工具 详细介绍
- ARM汇编指令:.align理解和用法
- 请教汇编ALIGN伪指令的问题
- arm汇编align伪指令详解
- windows平台下用eclispe进行c/c++开发
- 地上地下
- 决定未来IT产业版图的“三国”纷争
- 眼中的数据对齐
- Photoshop路径终极教程(钢笔的详细教程)
- RealView 编译工具 《汇编器指南》 ALIGN
- Ubuntu 校园认证上网解决方案---mentohust,锐捷被淘汰啦
- RealView 编译工具 《汇编器指南》 REQUIRE8 和 PRESERVE8
- web_config加密解密2
- VIM使用小技巧备忘
- 超实用的Linux/Unix Shell快捷键汇总
- Ubuntu下apt-get的网络代理设置(终端命令行的网络代理设置)
- [ASP.NET]DataBinder.Eval用法,文本绑定
- 谈谈MATLAB中cell函数