簡體   English   中英

你在哪里加載 a.out 文件中的 .text 段到

[英]Where do you load the .text segment in an a.out file to

我正在嘗試為我的引導加載程序使用 a.out 格式,我記得過去能夠做到這一點。 ELF 不能很好地支持 16 位,並且在與 C 代碼鏈接時會產生許多未定義的行為。 我正在使用 BCC/dev86 來編譯代碼。 我遇到的問題是找到任何文檔,說明您應該將文本段放在與位置相關的 8086/實模式 a.out 文件中的內存中的哪個位置。 它在入口點所在的標題中,但我無法找到加載 a.out 的任何類型的文檔。 任何幫助將非常感激

通常,引導加載程序的第一部分(16 位部分)是用匯編編寫的。 這主要是因為引導加載程序需要執行如此低級的任務,因此使用 c 並不值得。 一旦引導加載程序進入保護或長模式,它就可以使用 c。 對於引導加載程序而言,使用 c 是一個壞主意的另一個原因是引導加載程序的任務通常是使系統進入內核可以開始執行的狀態。 在 x86 上,這通常意味着進入保護模式。 這涉及將一些 16 位 c 代碼鏈接到一些 32 位 c 代碼(甚至可能是一些 64 位代碼)。 真的很難做到。

如果你真的認為你想繼續你正在做的事情:a.out 文件只是一個 elf 文件。 在引導加載程序中,cpu 從地址 0x7c00 開始執行。 所以我想你應該將 .text 部分鏈接到 0x7c00。

我想發表的另一條評論是,在現代 CPU 上,您甚至不必擔心如何從 a.out 文件中獲取部分。 通常 UEFI 可以直接引導 elf 文件。 Qemu 也可以。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM