2017-07-21 35 views
3

在回答,jww指出,1的補數是基於英特爾架構的編碼向量指令仍在使用,並魯斯蘭澄清這些指令被使用較多的自動向量化變得普遍。爲什麼1的補碼仍然用於編碼矢量指令?

有1的補數的優勢,導致它繼續在這些指令中使用,或者是它只是被用於歷史的原因?

引用JWW:

Intel® 64 and IA-32 Architectures Software Developer’s Manual 2A,3-8頁:

3.1.1.8描述章節

每個指令然後由信息段的數量進行說明。 「描述」部分更詳細地描述了指令的目的和所需的操作數。

術語

綜述可在說明部分中使用:
*遺留SSE:指SSE,SSE2,SSE3,SSSE3,SSE4,AESNI,PCLMULQDQ和任何未來的指令集引用XMM寄存器和沒有VEX編碼字首。
* VEX.vvvv。 VEX位域指定源寄存器或目標寄存器(採用1的補碼形式)。
* rm_field:速記MODR/M R/M字段值和任何REX.B
* reg_field:速記MODR/M Reg字段和任何REX.R

回答

3

物品爲不說話大約1的補碼被用於整數存儲。即使是VEX編碼的整數指令也會對2的恭維整數起作用。

所有一個1的補碼被說有,在一個VEX指令編碼的寄存器ID需要具有用於ID寄存器翻轉正常位。有人在這個問題推測這是爲了防止與現有的指示衝突,這對我來說很有意義。

+1

所以他們真的只是說他們翻轉所有的位(位否定),這就是全部? –

+3

@JosiahYoder - 是的,只適用於VEX編碼指令的部分,用於標識指令所作用的寄存器。它所作用的數據存儲在這些寄存器中(假設整數指令)仍然是2的恭維。 – hoodaticus

相關問題