編譯,連結(二)
.c檔案 => 程序
預編譯成.i檔案 => 編譯處理成.s檔案 彙編成.o檔案 => 連結成.exe檔案
1.合併段和符號表
2.符號解析
3.分配地址空間
4.符號重定位
程式在虛擬記憶體空間分段載入後再進行分頁處理,將每個段分成若干頁,每頁的大小為4k,再對映到實際記憶體空間分配的空間中,程序可能並不會一次全部載入到記憶體中,而是載入所要用的一部分,當在實際記憶體中找不到所需頁面時,將在虛擬記憶體中尋找,找到後使用頁面置換演算法(Linux使用LRU演算法(最近最久未使用))置換出所用頁面,再去記憶體中呼叫。
1.建立虛擬記憶體地址空間和實體記憶體的對映(對映結構體)
2.載入指令和資料
3.第一行指令的地址寫入PC暫存器
晶片
彙編指令:
rt = Sum(a,b)
call
1.壓入下一行指令地址
2.jmp 被呼叫方函式