1 Byte = 8bits
1 Halfword = 16bits = 2 Bytes
1 Word = 32 bits = 4 Bytes
1 Long = 64 bits = 8 Bytes
但隨後在x86彙編(AT & T語法),我使用MOVW(移動字)的半字移動到一個16位寄存器,MOVL(移動長)到字移動到一個32位寄存器。我在運行32位操作系統的64位操作系統上使用虛擬機。奇怪的數據大小?
我在做什麼錯?
這是否意味着在OS中我的虛擬機上運行的大小爲:
1 Byte = 4bits
1 Halfword = 8bits = 2 Bytes
1 Word = 16 bits = 4 Bytes
1 Long = 32 bits = 8 Bytes
我查了GDB的大小,我認爲他們是:
1 Byte = 8bits
1 Halfword = 16bits = 2 Bytes
1 Word = 32 bits = 4 Bytes
1 Long = 64 bits = 8 Bytes
請參閱Peter Cordes的答案。使用Halfword的「GDB」列表對於Intel和Compatible來說沒有任何意義。因此,如果您有16位,32位或64位處理器,則無關緊要。英特爾沒有「搞砸」。我想你是在想機器的話。這些在這裏沒有作用。 BYTE,WORD等具有固定的含義和大小。 –
是的,你是對的我認爲一個32位的PC應該有一個32位的單詞(讀下面的引號)。我所說的「搞砸」是因爲他們選擇了16位,所以它與一些舊處理器兼容,但我想我錯了。謝謝。 「處理器中的大多數寄存器通常是字大小的,在單個操作中可以在工作存儲器中傳輸的最大數據量是許多(不是全部)架構中的一個字。」 - 在維基百科關於詞 – SadSeven
ISTM你正在混淆「機器詞」與WORD類型。 –