1. 程式人生 > >AT&T ASM 學習6

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

--------------------------------------------------