64位平台簡介

2021-09-07 23:48:51 字數 1466 閱讀 1651

目前最流行的兩種64bit微處理器架構:ia-64    intel 64

ia-64 : 由intel和hewlett packard公司聯合開發,被使用在 itanium和 itanium 2微處理器之上。

intel 64 :又稱em64t / amd64 / ia-32e / x86-64 /aa-64/ x64/hammer architecture,是對原來x86架構的64位擴充套件,具有向後相容性。

這兩種架構是絕對不同的,不具有相互相容性。下面以intel 64在windows平台的情況進行介紹,將其稱之為win64。

64位架構有如下優勢:

(2)相容32位應用程式

(3)相容32位作業系統

現代64位的作業系統,並不是所有的模組都是64位的。為了能使32位的程式能執行在win64之上,需要開啟wow64模式(windows on windows 64)。

『注:該模式為當前64位作業系統的預設模式』wow64為windows上的乙個子系統,能使32位程式執行在win64之上。

注:win64不再相容16位程式的執行;其核心模組必須是64位的,使用者模組可以是32位的。

64位位址匯流排空間,理論上可定址的記憶體位址空間可達2^64=16eb,但實際肯定沒這麼多。

目前,各版本的64位windows能管理的記憶體數如下:

win64的程式模型

(1)記憶體頁的大小和win32保持一致,為4kb.

(2)位址空間的前64kb,不可用; 即系統最低的記憶體位址為0x10000

這個不同決定了不可能在乙個程式中既有32位的模組,又有64位的模組。因此,64位的程式不能載入乙個32位的動態連線庫,然後執行它的**。++

□ 32位程式在win64上使用更大記憶體需要開啟鏈結引數  /largeaddressaware  這樣該程式在win64可使用大約為4gb的記憶體.(實際通常為3.5gb左右)

」□ 64位程式可以通過**程序和com技術來訪問32位dll  具體可參看這篇文章   accessing 32-bit dlls from 64-bit code

然而,可以比較容易地將32位dll中資源載入到64位程式中      -- 在loadlibraryex時指定load_library_as_datafile標誌。

ilp32和lp64資料模型

32位環境涉及"ilp32"資料模型,是因為c資料型別為32位的int、long、指標。

而64位環境使用不同的資料模型,此時的long和指標已為64位,故稱作"lp64"資料模型。

現今所有64位的類unix平台均使用lp64資料模型,而64位windows使用llp64資料模型,除了指標是64位,其他基本型別都沒有變。

關於更多64位平台的知識請參考:

64位平台轉32位平台總結

一般都是32位平台轉到64位平台,可是我們剛好相。我們公司最近做的分布式檔案系統,以前是在 64位平台下 以為現在的伺服器很少有 32位平台,也就沒有過多的考慮,現在由於客戶需要,不得不修改至 32位平台。現在總結如下,共大家學習。1 資料型別的定義 一般我們都用 typedef 定義資料型別 ty...

linux64位平台移植

linux64 最大好處就是記憶體不在有 4gb的限制 32位 linux 只有4g 的虛擬位址定址空間,可以克服這個限制,但是實現起來會比較複雜,得不償失 資料模型 ilp32 lp64 llp64 ilp64 char 8 8 88 short 16 16 16 16int 32 32 32 6...

32 64位平台printf uint64的方法

在32位平台 typedef unsigned long long int uint64 t 在64位平台 typedef unsigned long int uint64 t 不同的typdef,要求在printf中使用不同的length modifier,uint64 t 在32位使用ll,在6...