3
我有一些C代码,转载如下。我的理解是它将BootPML4数组的某些位设置为某个值。有人可以解释如何填充下面的BootPML4
阵列吗?另外,如何确保数组中未使用的值为零,同时确保下面的两个设置保持不变?清零不寻常的阵列
typedef uint64_t pml4_entry_t;
#define PML4_PROT (INTEL_PTE_VALID | INTEL_PTE_WRITE)
pml4_entry_t BootPML4[PTE_PER_PAGE] __attribute__((section("__HIB, __bootPT"))) = {
[0] = ((uint64_t)(PAGE_SIZE) | PML4_PROT),
[KERNEL_PML4_INDEX] = ((uint64_t)(PAGE_SIZE) | PML4_PROT),
};
这不是gcc扩展。这是1999年ISO标准的标准C功能。 (好吧,我认为这是一个扩展,如果你正在编译前C99模式。) –
@KeithThompson是的,没有使用它自己,我意识到,再次阅读介绍后,正在寻找一个标准的例子。 –
你的回答仍然表示这是一个扩展。我认为它是C语言的一个标准功能更有意义。 –