http://www.360doc.com/content/13/0515/08/7245213_285516142.shtml
经常会看到arm-linux汇编中有如下的指令:

.align n

它的含义就是使得下面的代码按一定规则对齐

.align n指令的对齐值有两种方案:n2^n

各种平台最初的汇编器一般都不是gas,采取方案12的都很多,gas的目标是取代原来的汇编器,必然要保持和原来汇编器的兼容,因此在gas中如何解释.align指令会显得有些混乱,原因在于保持兼容。

  arm-linux是按照2^n的方案对齐的,需要说明的是这个对齐和ld-script里的对齐不同,不是一会事。下面的英文就不同平台的对齐进行了说明:

  版本2.11.92.0.12gasinfo(Mandrake 8.2上的)这样说:

  The way the required alignment is specified varies from system to system. For the a29k, hppa, m68k, m88k, w65, sparc, and Hitachi SH, and i386 using ELF format, the first expression is the alignment request in bytes. For example `.align 8' advances the location counter until it is a multiple of 8. If the location counter is already a multiple of 8, no change is needed.

  For other systems, including the i386 using a.out format, and the arm and strongarm, it is the number of low-order zero bits the location counter must have after advancement. For example `.align 3' advances the location counter until it a multiple of 8. If the location counter is already a multiple of 8, no change is needed.

  从这段文字来看,ARM.align 5就是25次方对齐,也就是4字节对齐,通过反汇编也可以看出对齐方式:

  .align 5

  stmfd sp!, {r0 - r3, lr}

  mov r0, ip

  ldmfd sp!, {r0 - r3, pc}^

  .align 5

  stmfd sp!, {r0 - r3, lr}

  mov r0, ip

  mov ip, r0

  ldmfd sp!, {r0 - r3, pc}^

  反汇编:

  00000000 <.text>:

  0: e92d400f stmdb sp!, {r0, r1, r2, r3, lr}

  4: e1a0000c mov r0, ip

  8: e8fd800f ldmia sp!, {r0, r1, r2, r3, pc}^

  ...

  20: e92d400f stmdb sp!, {r0, r1, r2, r3, lr}

  24: e1a0000c mov r0, ip

  28: e1a0c000 mov ip, r0

  2c: e8fd800f ldmia sp!, {r0, r1, r2, r3, pc}^

  30: e1a00000 nop (mov r0,r0)

  34: e1a00000 nop (mov r0,r0)

  38: e1a00000 nop (mov r0,r0)

  3c: e1a00000 nop (mov r0,r0)

  一些忠告:

  In the future, everytime when you build an elf file, you need meantime created your map file. And then you will avoid mistakes like this align.

  Also, please also pick up some linker script knowlege part. For embedded system, we frequently play the linker script to tune an image, for example, align some special section and so on for protection or/and cache purpose. wish helpful

align的对齐方式相关推荐

  1. 在前端网页设计中 align 和 valign 两种对齐方式的不同取值区分(持续补充)

    文章目录 前言 一.align 与 valign 的对齐方式与取值 二.常见应用区分整理 2.1.H5 页面设计的取值 2.2.表格标题的取值 2.3.表格属性的取值 总结 前言 不知道大家在学习 H ...

  2. html中设置图片的对齐方式,align属性怎么用 图片align属性到底是什么意思

    中align属性怎么使用?如下列代码: stock: W3C官方给出的解释是:所有浏览器都支持 align 属性的 "left" 和 "right" 值,除了 ...

  3. c++-内存管理-内存对齐方式

    内存对齐是什么 是一个数据类型所能存放的内存地址的属性,这个属性是一个无符号的整数,并且这个整数必须是2的N次方,当为8时,指这个数据类型所定义出来的变量内存地址都是8的倍数. 为什么需要内存对齐 使 ...

  4. 关于table的中元素对齐方式的注意点

    情形一:<td></td>中嵌套了div或table元素. 1.td中的内部元素(如div)设置了height属性,td中设置了vertical-align的情况下,在IE中, ...

  5. JQuery EasyUI之DataGrid列名和数据列分别设置不同对齐方式(转)

    需求如下 现有数据列三列 Name,Age,CreateDate 数据 张三,18,2000-12-09 :12:34:56 李四,28,2000-12-09 :12:34:56 王麻子,38,200 ...

  6. HTML示例03---标题的对齐方式

    1.说明 html的标题标记共有6个,分别是<h1>.<h2>.<h3>.<h4>.<h5>.<h6>,每一个标记在字体大小上都 ...

  7. JQuery EasyUI之DataGrid列名和数据列分别设置不同对齐方式

    我使用的Jquery Easyui  1.2.6 需求如下 现有数据列三列 Name,Age,CreateDate 数据 张三,18,2000-12-09 :12:34:56 李四,28,2000-1 ...

  8. html表格标题的垂直对齐方式

    <!DOCTYPE <!DOCTYPE html> <html> <head> <meta charset="utf-8"/> ...

  9. Canvas 文字对齐方式

    Canvas 文字对齐方式 常用的画文字的方法 public void drawText (String text, float x, float y, Paint paint) x,y 并不是指定文 ...

最新文章

  1. 从零开始学JavaScript一(简介)
  2. Php数组面包屑导航,php可应用于面包屑导航的迭代寻找家谱树实现方法
  3. python异步网络通信框架_超级快的 Python 异步网络框架
  4. Disk Expert Pro for Mac(磁盘分析管理工具)
  5. 分析匿名页(anonymous_page)映射
  6. ubuntu系统下mysql重置密码和修改密码操作
  7. f2fs学习笔记 - 1. f2fs概述
  8. Trump International Hotel Washington, D.C.宣布跻身猫途鹰“旅行者之选”美国获奖酒店四强之列
  9. vue-amap使用教程
  10. 弗吉尼亚理工大学计算机科学,美国弗吉尼亚理工大学计算机科学本科.pdf
  11. 信息搜集-读取微信聊天记录
  12. 计算机科学与技术专业需要配电脑吗,大一新生开学,需要配台“电脑”吗?辅导员:这4个专业必须配...
  13. 安装Java并配置环境,安装eclipse,在GitHub中上传代码
  14. 网易严选打造数仓规范和评价体系实践
  15. 英语美文-不做有才华的穷人
  16. Eth-Trunk的配置
  17. 10个高质量免费学习网站
  18. 零基础到入门React SSR
  19. intel主板bios设置方法
  20. noi 9267 核电站

热门文章

  1. 因果论在游戏场景中的应用
  2. python 遍历字典 遍历列表 文件读写
  3. JSONObject转对象、集合、数组
  4. 批量删除所有文件名称中的英文字母
  5. 手机遥控Arduino灯(一)
  6. [学习笔记] python深度学习---第三章 神经网络入门
  7. linux内核 机器码,uboot 与 linux 内核机器码
  8. “元宇宙”与“数字孪生”
  9. audio设备--ASOC框架--PCM等接口分析
  10. 基于PEview分析PE文件(4-3)