设为首页 加入收藏

TOP

对uboot的start.S中的.balignl的理解
2014-11-24 12:37:51 来源: 作者: 【 】 浏览:0
Tags:uboot start.S .balignl 理解

.balignl 16,0xdeadbeef


这个代码很有意思,作者挺搞笑。刚开始的时候看不懂这个代码是什么意思,balignl很显然是对齐的意思,我当时一看就知道这是16字节对齐,可是,0xdeadbeef是什么东东?呵呵,后来我找了半天资料才知道没什么意思,我们可以把它用其他的代替,比如0xgoodbeef,0xgoodgirl,明白了吧。


下面我对此进行讲解:


syntax:


.balign {alignment} {,fill} {,max}


Description: Word align the following code to alignment byte boundary (default=4). Fill skipped words with fill (default=0 or NOP). If the number of bytes skipped is greater than max, then don't align (default=alignment ).


alignment可以是4,8,16,32,的默认值是4


fill 就是要填充的内容


max 是一个数值,如果从当前位置开始移动到符合要求的位置所移动的地址大于max时,不采用对齐。


.balignl和.balignw是.balign的变形,前者是采用4字节填充,后者是2字节填充。


例如:


当前地址是0x0000 0001


.balignl 16,0xgoodgirl


16字节对齐,符合要求的第一个地址是0x0000 0010,可是指针移动了15位置,也就是15个字节,oxgoodgirl占4个字节,所以不填充空白区域,空白区域内容是未知的。


假如当前地址是0x0000 000e


指针移动到0x0000 0010,移动了2次,也就是2个字节,不足4个字节,空间不够,所以也不填充,这2个字节的内容是未知的。


假如当前地址是0x0000 000c


指针移动到0x0000 0010,移到4次,也就是4个字节,正好将0xgoodgirl填充进去。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Source Insight在Windows下通过VM.. 下一篇Android实现计时与倒计时的几种方..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·C++中智能指针的性能 (2025-12-25 03:49:29)
·如何用智能指针实现c (2025-12-25 03:49:27)
·如何在 C 语言中管理 (2025-12-25 03:20:14)
·C语言和内存管理有什 (2025-12-25 03:20:11)
·为什么C语言从不被淘 (2025-12-25 03:20:08)