CPU位數 作業系統位數和編譯器位數關係

2021-06-17 20:39:15 字數 1349 閱讀 9215

編譯器是將一種語言翻譯為另一種語言的電腦程式。編譯器將源程式(source language) 編寫的程式作為輸入,而產生用目標語言(target language )編寫的等價程式。通常地,源程式為高階語言(high-level language ),如c或c + + ,而目標語言則是目標機器的目標** (object code,有時也稱作機器**(machine code )),也就是寫在計算機機器指令中的用於執行的**。這一過程可以表示為:

源程式→編譯器 →目標程式。

我想來談談cpu

位數與作業系統位數的問題,這二者有區別也有聯絡,作業系統位數的概念是基於

cpu的位數的。 

cpu的位數是指

cpu能一次同時寄存和處理二進位制數碼的位數,這和

cpu中暫存器的位數對應。 作業系統的位數是說其所依賴的指令集的位數。計算機系統一般都應有向上相容性,所以也可有64位

cpu上執行

32位作業系統、32位

cpu上執行

16位作業系統的情況。作業系統位數應該是根據指標型別的位數來定的。整數型別不一定跟位數相等,

cpu位數準確地說應該是

cpu一次能夠並行處理的資料寬度,一般就是指資料匯流排寬度。

16位和

32位早期的主要區別是暫存器的位數,記憶體的定址和相應指令集的擴充。32位

intel   cpu

都有real

模式,即完全的

16位模式,遮蔽掉

32位的所有特性;

32位模式,可以使用所有的

32位特性;模擬的

8086

模式,可以用乙個

32位機模擬多個

16位的

8086

機,他們的記憶體是分段隔離的。現在的作業系統使用的都是

32位的模式,因為可以享受到

cpu直接提供的記憶體的分頁和分段管理。他們提供模擬機制,實際上也是依託

cpu實現的

16位環境,而不是直接解釋

16位**。由於負責生成彙編**的主要是編譯器,所以設計

16位的編譯器在任何情況下只能生成

16位**。當然,這並不是說用

16位的編譯器不可能生成

32位的**,因為他完全可能被設計成在

16位實模式下生成

32位的**,從而可以在

32位的機器上被執行。這就是所謂的交叉編譯。你可以使用諸如

gcc這樣的交叉編譯器在16位

dos環境下編譯出可以在32位

linux

環境下被執行的程式。

編譯器,CPU和作業系統的巨集

編譯器gcc ifdef gnuc if gnuc 3 gcc3.0以上 visual c ifdef msc ver 非vc編譯器很多地方也有定義 if msc ver 1000 vc 4.0以上 if msc ver 1100 vc 5.0以上 if msc ver 1200 vc 6.0以上 ...

編譯器,CPU和作業系統的巨集

編譯器 gcc ifdef gnuc if gnuc 3 gcc3.0以上 visual c ifdef msc ver 非vc編譯器很多地方也有定義 if msc ver 1000 vc 4.0以上 if msc ver 1100 vc 5.0以上 if msc ver 1200 vc 6.0以上...

linux系統位數檢視和cpu位數

1.uname a如果有x86 64就是64位的,沒有就是32位的 這是64位的 uname a linux desktop 2.6.35 23 generic 37 ubuntu smp fri nov 5 19 17 11 utc 2010 i686 gnu linux 這是32位的 uname...