全部博文(123)
分类: LINUX
2011-01-08 16:10:52
Reference:
|
其中,repeat、size 和value都是常量表达式。Fill的含义是反复拷贝size个字节。Repeat可以大于等于0。size也可以大于等于0,但不能超过8,如果超过8,也只取8。把repeat个字节以8个为一组,每组的最高4个字节内容为0,最低4字节内容置为value。
Size和 value为可选项。如果第二个逗号和value值不存在,则假定value为0。如果第一个逗号和size不存在,则假定size为1.
例如,在Linux初始化的过程中,对全局描述符表GDT进行设置的最后一句为:
.fill NR_CPUS*4,8,0 /* space for TSS's and LDT's */
因为每个描述符正好占8个字节,因此,.fill给每个CPU留有存放4个描述符的位置。
2.
|
把当前字节的位置计数器提前到new_lc(new location counter)。new_lc或者是一个常量表达式,或者是一个与当前子节处于同一节的表达式。也就是说,你不能用.org横跨节:如果new_lc是个错误的值,则.org被忽略。.org只能增加位置计数器的值,或者让其保持不变;但绝不能用.org来让位置计数器倒退。
注意,位置计数器的起始值是相对于一个节的开始的,而不是子节的开始。当位置计数器被提升后,中间位置的字节被填充值fill(这也是一个常量表达式)。如果逗号和fill都省略,则fill的缺省值为0。
例如:.org 0x2000
ENTRY(pg0)
表示把位置计数器置为0x2000,这个位置存放的就是临时页表pg0。
3.
|
|
chinaunix网友2011-03-08 16:04:22
很好的, 收藏了 推荐一个博客,提供很多免费软件编程电子书下载: http://free-ebooks.appspot.com