.global main
.data
arr: .short 1, 0xEA, 0x2, 0x3, 0b1010
.text
main:
lea (arr), %rbx
movb 3(%rbx),%al #1
movw arr 3, %ax #2
當我嘗試此代碼al獲取值0x0但ax獲取值0x200
時,你能告訴我為什么會這樣嗎?#1 和 #2 和有什么不一樣?
uj5u.com熱心網友回復:
由于 x86 是 little-endian 架構,因此其中的資料arr如下所示:
arr 0 1 2 3 4 5 6 7 8 9
0x01 0x00 0xEA 0x00 0x02 0x00 0x03 0x00 0x0A 0x00
#1 將資料讀取到al. al是一個單位元組暫存器,因此0x00在 3被加載并且值變為0x0。
#2 讀取資料到ax. ax是一個兩位元組的暫存器,因此0x00 0x02被加載并且值變為0x200.
不同之處在于目標暫存器的大小。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/459728.html
