[問題] 請教有關記憶體的幾個問題
請教各位高手
1:我研究了 PE檔 格式,但是始終弄不懂"為什麼"他要那麼作??
意思是:我覺得大部分文件都在講 格式 的剖析
是告訴我"what" 但我比較想知道"why"
不知哪裡有詳細的原因說明
比如 我想知道它在load 程式時, 記憶體轉換 的詳細運作流程.
2.當我在 C 裡寫printf("%d", &p)
請問印出來的是 線性位址?? 還是實體位址??
同樣的 當用softice等 工具時 它在每行程式開頭 印出來的
應該是 線性位址嗎?
3 . pe裡 有所謂 RVA :relative virtual address.
然後 loader會將他轉換 ,把每一個section轉換後的結果填入 各自
section header裡面 對應項中的 VirtualAddress那一項.
接下來呢??
我的意思是intel手冊中 若我們使用保護模式
應該轉換位址的流程是 VirtualAddress->線性位址->實體位址
所以loader做完這個工作後,應該還沒結束吧??
它應該還要幫程式設置相對應的 global(local) descriptor table
及其對應的項目 , 甚至是 page table吧??
因為我觀念不很清楚, 不知道有人能提供正確的流程嗎??
或者詳細的參考文件更好
謝謝!!
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.128.103.179