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語言的一個標準功能更有意義。 –