分类: LINUX
2009-03-21 16:46:27
inc/mmu.h最后有段代码
|
里面 __attribute__ ((packed)) 表示里面的元素紧凑排列,中间不要有间隙;这点跟对齐正好相反 __attribute__ ((aligned(n))),n为4、8等2的幂数。
注意:packed,aligned(n)两边的双括号是必须的。
使用packed编译参数,防止编译器对该结构进行优化,即把pd_base进行32位对齐,使pd_lim和pd_base中间产生2字节的空隙;这样pd_lim)(低16位)后面紧跟着pd_base(高32位),形成48位,被加载到GDTR或者LDTR或者IDTR
info gcc里面的部分解释
The `packed' attribute specifies that a variable or structure field should have the smallest possible alignment--one byte for a variable, and one bit for a field, unless you specify a larger value with the `aligned' attribute. |