.balignl 16,0xdeadbeef浅析
来源:互联网 发布:相机cf卡数据恢复 编辑:程序博客网 时间:2024/06/08 04:29
http://zqwt.012.blog.163.com/blog/static/12044684201031102956976/
最近在分析u-boot的源代码,看到这一行:
.balignl 16, 0xdeadbeef
不知道为什么要这样写,0xdeadbeef,明显是个单词组,写在这里有何意义呢?查阅了众多资料的时候才晃然大悟。
下面我一步步来说明:
首先要弄明白.balignl的意思,这其实应该算是一个伪操作符,伪操作符的意思就是机器码里,
并没有一个汇编指令与其对应,是由编译器来实现其功能的。
.balign是意思是:以当前地址为开始开始,找到第一次出现的以第一个参数为整数倍的地址,并将其作为结束地址,
在这个结束地址前面存储一个字节长度的数据,存储内容正是第二个参数。如果当前地址正好是第一个参数的倍数,则没有数据被写入到内存。
.balign 8, 0xde这条指令的含义可以用下图表示:
图解:以当前地址为开始开始,找到第一次出现的以8为整数倍的地址,并将其作为结束地址,在这个结束地址前面存储一个字节长度的数据0xde。
如果当前地址正好是8的倍数,则没有数据被写入到内存。
以此类推,.balignw则表示第二个参数存入的内容长度为2字节:
.balignw 4, 0x368d
因为现在填入的内容为2个字节,那就存在以下几种情况:
1>当前地址没有偏移就满足了以4为倍数的地址
2>当前地址偏移了1个字节就满足了以4为倍数的地址
3>当前地址偏移了2个字节就满足了以4为倍数的地址
4>当前地址编移了3个字节就满足了以4为倍数的地址
分析一下这四种情况:
1>当没有偏移的时候,地址中间肯定没有办法填上信息
2>当偏移1个字节的时候,地址中间空隙不够,所以填入的数值,是末定义,也就是说,填入什么值,不清楚
3>当偏移2个字节的时候,地址中间的空隙正好填入0x368d两个字节的内容
4>当偏移3个字节的时候,地址中间的空隙大于所要填的内容。此时填入的数值,是末定义,填入什么值,不清楚
以此类推,.balignl,这个指令用来填与一个字,即4个字节的长度
仔细分析一下就知道,对于.balignl 16, 0xdeadbeef,如果想要0xdeadbeef一定填到当前地址后面某个部分,
当前地址偏移量就必须为4字节,这样才能保证在任何情况下,偏移的地址所留的空隙刚好填入所要填的内容。
注意:0xdeadbeef是什么意思?
类似这样的值很多,像0xabababab,它们的作用就是为内存做标记,插在那里,就表示从这个位置往后的一段有特殊作用的内存,而这个位置往前,禁止访问。
- .balignl 16,0xdeadbeef浅析
- .balignl 16,0xdeadbeef浅析
- .balignl 16,0xdeadbeef浅析
- .balignl 16,0xdeadbeef浅析
- .balignl 16,0xdeadbeef浅析
- .balignl 16, 0xdeadbeef浅析
- .balignl 16,0xdeadbeef浅析
- U-boot .balignl 16,0xdeadbeef浅析
- .balignl 16,0xdeadbeef
- .balignl 16,0xdeadbeef
- .balignl 16,0xdeadbeef
- bootloader——.balignl 16,0xdeadbeef浅析
- 关于 .balignl 16,0xdeadbeef
- UBOOT问题收集--balignl 16, 0xdeadbeef
- u-boot中的.balignl 16,0xdeadbeef的理解
- u-boot中的.balignl 16,0xdeadbeef的理解
- u-boot中的.balignl 16,0xdeadbeef的理解
- u-boot中的.balignl 16,0xdeadbeef的理解
- laravel视图提交表单到控制器的使用需要注意配置事项
- C语言和c++中的const、static、extern
- 矩阵维度与通道
- 剑指Offer----面试题13:在O(1)时间删除链表结点
- iOS实践:天气App
- .balignl 16,0xdeadbeef浅析
- 2.5.位运算实战演练2--技术升级:用宏定义来完成位运算
- leetcode-Java-18. 4Sum
- 任意进制整数之间的相互转换(C++实现)
- Android WebView 加载横向进度条
- ROS中 package.xml CMakeList.txt launch文件
- rar
- 微信公众号开发--消息的接收与被动回复消息
- Android高级图片滚动控件,编写3D版的图片轮播器