[問題] 請教有關記憶體的幾個問題

看板Programming作者 (我女友很像豬木!)時間17年前 (2007/05/12 15:46), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
請教各位高手 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
文章代碼(AID): #16HN3eLi (Programming)