跳轉到內容

x86 彙編/固有資料型別

來自華夏公益教科書,開放的書籍,開放的世界

這部分的 x86 彙編 書籍是一個存根。您可以透過擴充套件此部分來提供幫助。


嚴格來說,組合語言沒有像高階程式語言那樣的預定義資料型別。任何通用暫存器都可以儲存任何兩個或四個位元組的序列,無論這些位元組代表數字、字母還是其他資料。同樣,沒有為記憶體塊分配具體的型別 - 您可以為它們分配任何您喜歡的值。

也就是說,人們可以在組合語言中將資料分成兩類:整數和浮點數。雖然您可以將浮點值載入到暫存器中並將其視為整數,但結果將是不可預測的,因此最好將它們分開。

整數表示一個整數,可以是正數或負數(在計算機中,零被視為正數)。在 8086 架構下,它最初以 8 位和 16 位大小出現,用於最基本的操作。後來,從 80386 開始,資料匯流排擴充套件到支援 32 位操作,從而允許對該大小的整數進行操作。x86 架構下的最新系統支援 64 位指令;但是,這需要 64 位作業系統才能獲得最佳效果。

計算機使用二進位制補碼來儲存負數。最高有效位指示符號,置位表示負號。對於正數,其餘位以通常的方式儲存值。如果儲存的是負數,則其餘位儲存與最大值的差值。這允許輕鬆地利用溢位期間發生的效應來進行操作。但是,您可以將值視為無符號值。一些彙編指令在符號位方面表現略有不同;因此,有符號整數和無符號整數之間存在細微區別。

浮點數

[編輯 | 編輯原始碼]

浮點數是實數的(有限)子集。它們通常包含小數點之前之後的數字,例如 3.14159。與整數不同,在整數中小數點被理解為在所有數字之後,在浮點數中,小數點可以浮動到數字序列中的任何位置。

最初,浮點數不是主處理器的一部分,需要使用模擬軟體。然而,有一些浮點協處理器允許對這種資料型別進行操作,並且從 486DX 開始,它們直接與 CPU 整合在一起。

因此,浮點操作不一定與所有處理器相容 - 如果您需要執行這種型別的算術運算,您可能需要使用軟體庫作為備用程式碼路徑。

現代處理器都使用 IEEE 754 標準,該標準在華夏公益教科書浮點數中進行了廣泛的解釋。請記住,不能表示為兩個的相對較短的冪(包括負冪)之和的數字始終是近似的。

華夏公益教科書