网站建设情况报告,国内欣赏电商设计的网站,故事网站模版,做不锈钢的网站有哪些http://zqwt.012.blog.163.com/blog/static/12044684201031102956976/ 最近在分析u-boot的源代码#xff0c;看到这一行#xff1a; .balignl 16, 0xdeadbeef不知道为什么要这样写#xff0c;0xdeadbeef#xff0c;明显是个单词组#xff0c;写在这里有何意义呢看到这一行 .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它们的作用就是为内存做标记插在那里就表示从这个位置往后的一段有特殊作用的内存而这个位置往前禁止访问。