1. 程式人生 > >編譯,連結(二)

編譯,連結(二)

.c檔案                                                                                                =>                                 程序 

          預編譯成.i檔案    => 編譯處理成.s檔案      彙編成.o檔案     => 連結成.exe檔案

                                                                                                            1.合併段和符號表

                                                                                                             2.符號解析

                                                                                                             3.分配地址空間

                                                                                                             4.符號重定位

程式在虛擬記憶體空間分段載入後再進行分頁處理,將每個段分成若干頁,每頁的大小為4k,再對映到實際記憶體空間分配的空間中,程序可能並不會一次全部載入到記憶體中,而是載入所要用的一部分,當在實際記憶體中找不到所需頁面時,將在虛擬記憶體中尋找,找到後使用頁面置換演算法(Linux使用LRU演算法(最近最久未使用))置換出所用頁面,再去記憶體中呼叫。

1.建立虛擬記憶體地址空間和實體記憶體的對映(對映結構體)

2.載入指令和資料

3.第一行指令的地址寫入PC暫存器

晶片

  彙編指令:

rt  = Sum(a,b)

    call 

         1.壓入下一行指令地址

         2.jmp    被呼叫方函式