AT&T ASM 學習6
--------------------------------------------------
整數:
位元組(Byte):8
字(Word):16
雙字(Doubleword):32
四字(Quadword):64
.short .int .long .quad .octa
小端格式:低位位元組存在低位地址,高位位元組存在高位地址。 在大多數作業系統中,整數採用這種格式在記憶體中儲存
大端格式:與小端格式相反。
--------------------------------------------------
movzx #剩餘位補零
movsx #剩餘位補符號位
--------------------------------------------------
MMX整數:
64位打包位元組整數
64位打包字整數
64位打包雙字整數
movq values1, %mm0
--------------------------------------------------
SSE整數:
128位打包位元組整數
128位打包字整數
128位打包雙字整數
128位打包四字整數
movdqa values1, %xmm0 #a表示記憶體邊界對齊
movdqu values1, %xmm1 #u表示記憶體邊界不對齊
--------------------------------------------------
BCD碼:個位,十位,百位。。。。每一個佔用1個位元組
打包的BCD碼:個位,十位,百位。。。。每一個佔用半個位元組
--------------------------------------------------
FPU暫存器:
st0~st7 #80位
可以用FPU暫存器進行BCD數學運算操作,最高位為符號位,在FPU中BCD值會被轉換成浮點形式
fbld addr1 #載入addr1的值到FPU暫存器堆疊的頂部(st0)
fimul addr1 #st0暫存器中的值乘以addr1中的值
fbstp addr1 #讀取st0暫存器中的值到addr1中
--------------------------------------------------
浮點數:
IEEE標準754浮點標準
二進位制浮點值:符號,指數,有效數字
單精度:31,30~23,22~0
雙精度:63,62~52,51~0
擴充套件雙精度浮點格式:80位
flds 載入單精度
fldl 載入雙精度
fsts 讀取單精度
fstl 讀取雙精度
FPU暫存器:80位
預置的浮點值:
fld1 把1.0壓入FPU堆疊
fldpi 把pi的值壓入FPU堆疊
...............
--------------------------------------------------
SSE浮點數:
三種標準浮點格式
128位打包單精度浮點
128位打包雙精度浮點
movaps values1, %xmm0 #a表示記憶體邊界對齊
movups #u表示記憶體邊界不對齊
movss
movlps
movhps
movlhps
movhlps
--SSE2:
movapd
movupd
movsd
movhpd
movlpd
--SSE3:
movshdup
movsldup
movddup
--------------------------------------------------
轉換指令:打包的單精度、打包的雙精度、打包的整數之間的轉換
cvtxx2xx
--------------------------------------------------