技術文章
技術問答
iT 徵才
聊天室
2026 鐵人賽
登入/註冊
文章
問答
Tag
邦友
鐵人賽
搜尋
2024 iThome 鐵人賽
DAY
28
0
Software Development
RISC-V 與處理器之架構學習及應用
系列 第
28
篇
[Day28] CALL: Loader (4/5)
16th鐵人賽
凱特
2024-10-12 01:23:37
702 瀏覽
分享至
1.
Loader 的作用
:
輸入
:Loader 的輸入是已編譯並連結好的可執行檔案(例如,
a.out
for RISC-V)。
輸出
:Loader 的輸出是程式開始執行,將可執行檔載入記憶體並啟動程式。
可執行檔
:可執行檔存儲於磁碟上,當執行一個程式時,Loader 將其載入記憶體,並開始運行該程式。
操作系統角色
:實際上,Loader 是作業系統(OS)的一部分,負責將程式載入記憶體。載入程式是 OS 的一項任務。
2.
Loader 的具體功能
:
將程式載入新的位址空間
:
Loader 首先讀取可執行檔案的文件頭,以了解文本段和數據段的大小。
它會創建一個新的位址空間,該空間足夠存儲文本段、數據段以及一個堆疊段。
Loader 會將可執行文件中的指令和數據複製到新的位址空間中,並將傳遞給程式的參數複製到堆疊上。
初始化機器暫存器
:
大多數的暫存器會被清除,並且
堆疊指標(stack pointer,sp)
會被指向堆疊的第一個空閒位址。
跳轉到啟動程式
:
Loader 會跳轉到啟動程式(start-up routine),該程式會執行以下操作:
將傳遞給程式的參數從堆疊中複製到暫存器中,並設置程式計數器(PC)。
如果主程式(main routine)執行完畢,則通過 exit 系統呼叫終止程式。
3.
Loader 的詳細工作流程
:
讀取可執行檔案頭
:Loader 從可執行檔案中提取文本段和數據段的大小和位置,並在記憶體中分配相應的空間。
創建位址空間
:Loader 創建一個新的記憶體位址空間,並確保它有足夠的空間來存儲程式的文本、數據段,以及一個堆疊段。
複製數據
:將程式的指令和數據從可執行檔案中複製到位址空間。Loader 也會將傳遞給程式的參數放入堆疊中,以便程式能夠訪問這些參數。
初始化暫存器
:堆疊指標
sp
被初始化為堆疊的起始位址,其他暫存器則被清零。
跳轉到程式的啟動地址
:Loader 將程式的控制權交給其啟動程式,並設置程式計數器(PC)以開始執行程式。如果主程式返回,Loader 會執行系統呼叫來結束程式的執行。
留言
追蹤
檢舉
上一篇
[Day27] CALL: Linker (3/5)
下一篇
[Day29] 總結與流程 (5/5)
系列文
RISC-V 與處理器之架構學習及應用
共
30
篇
目錄
RSS系列文
訂閱系列文
1
人訂閱
26
[Day26] CALL: Assembler (2/5)
27
[Day27] CALL: Linker (3/5)
28
[Day28] CALL: Loader (4/5)
29
[Day29] 總結與流程 (5/5)
30
[Day30] 從抽象層次到效能改善
完整目錄
熱門推薦
{{ item.subject }}
{{ item.channelVendor }}
|
{{ item.webinarstarted }}
|
{{ formatDate(item.duration) }}
直播中
立即報名
尚未有邦友留言
立即登入留言
iThome鐵人賽
參賽組數
902
組
團體組數
37
組
累計文章數
19837
篇
完賽人數
528
人
看影片追技術
看更多
{{ item.subject }}
{{ item.channelVendor }}
|
{{ formatDate(item.duration) }}
直播中
熱門tag
15th鐵人賽
16th鐵人賽
13th鐵人賽
14th鐵人賽
17th鐵人賽
12th鐵人賽
11th鐵人賽
鐵人賽
2019鐵人賽
javascript
2018鐵人賽
python
2017鐵人賽
windows
php
c#
linux
windows server
css
react
熱門問題
Fortigate Remote Access
關於Aruba Wi-Fi (thin AP) controller設定
Seeed XIAO ESP32-S3 透過 UART (921600) 無法發送 AT 指令到 Grove Vision AI V2 (Himax WE2)
Windows XP作業系統,程式存取SQL SERVER 2025失敗
webview cab 封包檔
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
熱門回答
Fortigate Remote Access
Windows XP作業系統,程式存取SQL SERVER 2025失敗
關於Aruba Wi-Fi (thin AP) controller設定
SAP B1 如何將"自定義表格"匯出並且匯入到另一個資料庫
熱門文章
大家都怕依賴 AI,但真正天天用 AI 的人似乎沒那麼怕
IT Diagnostic Agent 開發日誌 #2 為什麼我原本不打算公開這個工具?
我不信任 AI 的自律,所以把「限制」寫死在資料庫裡
不只是 AI 幫你寫程式 — — OpenAI Codex 在做的是另一件事
AI Agent 時代的企業風險:當洩漏的不再只是資料
IT邦幫忙
×
標記使用者
輸入對方的帳號或暱稱
Loading
找不到結果。
標記
{{ result.label }}
{{ result.account }}