Linux_平坦內存模式

第一章平坦內存模式

   WINDOWS系統下的32位程序在內存中的佈局被稱爲平坦內存模式,這種模式雖然只有一個段,卻同時包了含代碼和數據。但是,這種模式只能運行在386或更高的處理器上。

   早期的16位程序,由不同的段組合而成,且每個段的地址重定位有64K的限制。而平坦內存模式下,程序無需進行地址重定位,內存訪問範圍達到4G寬度。其優點是,彙編程序更容易編寫,且代碼執行速度更快。 

   在32位WINDOWS程序中,所有的段寄存器依然存在,但是都被設置成了同一個值,這表明,段寄存器和地址重定位已經無須使用了。

   對於那些DOS程序員來說,可以發現32位WINDOWSPE程序其實和DOS的COM程序很類似,區別是PE只有一個段,段裏同時包含了代碼和數據,而COM程序在只有一個段的時候,也不進行地址重定位,和PE一樣,直接使用偏移地址就可以正常運行了。

   平坦內存模式下,無論是代碼還是數據的地址,在整個4G範圍內,默認都是NEAR的。

 
  還有兩個段寄存器是FS和GS,通常在程序中時不使用,只有涉及到操作系統指令時纔用到。

平坦內存模式

1.它的數據段和代碼段是32位的,所以能訪問4G的內存。 2.在“平坦內存模式”,cs、ds、es的值不需你操心,也不必知道它們的值是多少,它們的值是相等的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章