const char *str = "Hello world";
int integer;
int data = 3;
void bootEntry(void)
{
for (;;) ;
}
然後只要我們有依照multiboot 2的規定,我們就可以利用像是GRUB 2等等的程式讀取我們的核心。所以我們需要有一個Multiboot的Header。利用組合語言,大概長這樣就可以了。.section .multiboot_header
header_start:
.long 0xE85250D6 # Magic
.long 0 # i386
.long header_end - header_start
.long 0x100000000 - (0xE85250d6 + 0 + (header_end - header_start)) # Checksum
.word 0
.word 0
.long 8
header_end:
然後接下來是重頭戲,我們的Link script不能像以前那麼簡單了,我們要把這一段Header,插在所有東西的前面,以符合規定。OUTPUT_FORMAT(elf32-x86-64)
ENTRY(bootEntry)
SECTIONS {
. = 0x100000;
.text :
{
KEEP(*(.multiboot_header))
*(.text)
}
.data : {*(.data)}
.bss : {*(.bss)}
.rodata : {*(.rodata)}
}
要注意,現在我們都還是32位元的保護模式下,我們要利用這個當作跳板,來進入64位元模式。我們的Makefile也有許多東西,大家可以去看看。截至目前為止的程式碼:https://github.com/TNPLR/nos/tree/0.13.5
👉【幫我們一個忙!】👈
👋如果您喜歡這篇文章,請在下方按5個Like!
❤您的支持是我們最大的動力!
您只要登入帳號(Facebook、Google),在下方按5個Like,我們就會收到來自LikeCoin基金會的贊助。
您只需要支持我們,完全不會花到錢!