发 帖  
原厂入驻New

如何才能纠正align对齐的问题?

813 韦东山 ARM
分享
注意:如果点击空白处无法输入,则点击字会有输入提示符 | 则可以使用键盘进行输入!

此板块为  [ARM裸机加强版]
  • 问题所在章节:  第014课 异常与中断
  • 发生问题的运行环境: 无










1.视频中说,在汇编代码中 .align 4是4字节对齐,但是查看uboot 写的是.align 5,难道是5字节对齐? 明显不可能
2.写一个demo测试一下,发现.align x对齐的是2^x字节,uboot对齐的是align 5,也就是32字节

_start:     .string "1234"_test_addr:    ldr r0,[r2]反汇编如下    00000000 <_start>:00000005 <_test_addr>:    //---------------------------------------------------_start:     .string "1234".align 4 _test_addr:    ldr r0,[r2] 反汇编如下00000000 <_start>:00000010 <_test_addr>://---------------------------------------------------_start:     .string "1234".align 5 _test_addr:    ldr r0,[r2] 反汇编如下00000000 <_start>:00000020 <_test_addr>:
  • 搜索下官方文档的索引.align,有如下描述,也就是有两种情况,对于ARM,表示的是末尾几个0,也就是2^x了
For the arc, hppa, i386 using ELF, iq2000, m68k, or1k, s390, sparc, tic4x, tic80 and xtensa, 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 the tic54x, the first expression is the alignment request in words.
For other systems, including ppc, i386 using a.out format, 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.
0
2019-4-4 07:45:21   评论 分享淘帖 邀请回答

相关问题

1个回答
2019-4-4 08:36:57 评论

举报

只有小组成员才能发言,加入小组>>

197个成员聚集在这个小组

加入小组

热门话题

创建小组步骤

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