iT邦幫忙

2022 iThome 鐵人賽

DAY 5
0

哇!轉眼間來到第五天了,廢廢我已經順利寫過了鐵人賽的1/6的時程,加油衝衝衝/images/emoticon/emoticon07.gif
今天要做的筆記是

程式的轉譯與執行:

當computer要執行時高階語言,無法直接執行需要轉譯成機器語言。
step 1.高階語言會先compiler成組合語言。
step 2.接著被assembler組譯成機器語言。
step 3.再將object file由linker整理成執行檔(executable file)。
step 4.最後將執行檔裡的資料copy至適當的記憶體位址。
大致示意圖:
https://ithelp.ithome.com.tw/upload/images/20220917/20145527UFlwrms3xS.jpg

連結器(linker)

linker決定資料與指令的位址並決定內外部的位址參考。

載入器(loader)

1.讀取執行檔的header來決定程式碼與資料區的大小。
2.並以此來產生足夠容納資料與程式碼的記憶體空間。
3.將資料copy至記憶體。
4.接著複製主程式的parameter至stack(argument放到local variable)。
5.初始化暫存器並將stack指標設定在第一個可用空間。
6.(這裡由os掌控)跳至start-up routine(啟動常式)呼叫要被執行的主程式,當主程式結束返回時,使用exit來結束執行並釋放硬體資源。
以下為載入器的流程示意圖:
https://ithelp.ithome.com.tw/upload/images/20220917/20145527ZNdIoqlAY7.jpg


上一篇
DAY 4 計算機組織小筆記
下一篇
DAY 6 計算機組織小筆記3
系列文
關於因耍廢太久而必須挑戰5個月上研究所的廢廢38
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言