1. Movaps
movaps XMM,XMM/m128 movaps XMM/128,XMM
把源存儲器內(nèi)容值送入目的寄存器,當有m128時,必須對齊內(nèi)存16字節(jié),也就是內(nèi)存地址低4位為0.
2. Movups
movups XMM,XMM/m128 movaps XMM/128,XMM
把源存儲器內(nèi)容值送入目的寄存器,但不必對齊內(nèi)存16字節(jié)
3. Movlps
movlps XMM,m64
把源存儲器64位內(nèi)容送入目的寄存器低64位,高64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
4. Movhps
movhps XMM,m64
把源存儲器64位內(nèi)容送入目的寄存器高64位,低64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié).
5. Movhlps
movhlps XMM,XMM
把源寄存器高64位送入目的寄存器低64位,高64位不變.
6. Movlhps
movlhps XMM,XMM
把源寄存器低64位送入目的寄存器高64位,低64位不變.
7. movss
movss XMM,m32/XMM
原操作數(shù)為m32時:dest[31-00] <== m32 dest[127-32] <== 0
原操作數(shù)為XMM時: dest[31-00] <== src[31-00] dest[127-32]不變
8. movmskpd
movmskpd r32,XMM
取64位操作數(shù)符號位
r32[0] <== XMM[63] r32[1] <== XMM[127] r32[31-2] <== 0
9. movmskps
movmskps r32,XMM
取32位操作數(shù)符號位
r32[0] <== XMM[31] r32[1] <== XMM[63] r32[2] <== XMM[95] r32[3] <== XMM[127] r32[31-4] <== 0
10. pmovmskb
pmovmskb r32,XMM
取16位操作數(shù)符號位 具體操作同前
r[0] <== XMM[7] r[1] <== XMM[15] r[2] <== XMM[23] r[3] <== XMM[31]
r[4] <== XMM[39] r[5] <== XMM[47] r[6] <== XMM[55] r[7] <== XMM[63]
r[8] <== XMM[71] r[9] <== XMM[79] r[10] <== XMM[87] r[11] <== XMM[95]
r[12] <== XMM[103] r[13] <== XMM[111] r[14] <== XMM[119] r[15] <== XMM[127] r[31-16] <== 0
11. movntps
movntps m128,XMM
m128 <== XMM 直接把XMM中的值送入m128,不經(jīng)過cache,必須對齊16字節(jié).
12. Movntpd
movntpd m128,XMM
m128 <== XMM 直接把XMM中的值送入m128,不經(jīng)過cache,必須對齊16字節(jié).
13. Movnti
movnti m32,r32
m32 <== r32 把32寄存器的值送入m32,不經(jīng)過cache.
14. Movapd
movapd XMM,XMM/m128 movapd XMM/m128,XMM
把源存儲器內(nèi)容值送入目的寄存器,當有m128時,必須對齊內(nèi)存16字節(jié)
15. Movupd
movupd XMM,XMM/m128 movapd XMM/m128,XMM
把源存儲器內(nèi)容值送入目的寄存器,但不必對齊內(nèi)存16字節(jié).
我感覺這兩條指令同movaps 和 movups 指令一樣,不過又不確定.
16. Movlpd
movlpd XMM,m64 movlpd m64,XMM
把源存儲器64位內(nèi)容送入目的寄存器低64位,高64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
17. Movhpd
movhpd XMM,m64 movhpd m64,XMM
把源存儲器64位內(nèi)容送入目的寄存器高64位,低64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié).
18. Movdqa
movdqa XMM,XMM/m128 movdqa XMM/m128,XMM
把源存儲器內(nèi)容值送入目的寄存器,當有m128時,必須對齊內(nèi)存16字節(jié).
19. Movdqu
movdqu XMM,XMM/m128 movdqu XMM/m128,XMM
把源存儲器內(nèi)容值送入目的寄存器,但不必對齊內(nèi)存16字節(jié).
20. movq2dq
movq2dq XMM,MM
把源寄存器內(nèi)容送入目的寄存器的低64位,高64位清零.
21. movdq2q
movdq2q MM,XMM
把源寄存器低64位內(nèi)容送入目的寄存器.
22. Movd
movd XMM,r32/m32 movd MM,r32/m32
把源存儲器32位內(nèi)容送入目的寄存器的低32位,高96位清零.
movd r32/m32,XMM movd r32/m32,MM
把源寄存器的低32位內(nèi)容送入目的存儲器32位.
23. Movq
movq XMM,XMM/m64 movq MM,MM/m64
把源存儲器低64位內(nèi)容送入目的寄存器的低64位,高64位清零.
movq m64,XMM
把源寄存器的低64位內(nèi)容送入目的存儲器.
1. addps
addps XMM,XMM/m128
源存儲器內(nèi)容按雙字對齊,共4個單精度浮點數(shù)與目的寄存器相加,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
2. adds
addss XMM,XMM/m32
源存儲器的低32位1個單精度浮點數(shù)與目的寄存器的低32位1個單精度浮點數(shù)相加,結(jié)果送入目的寄存器的低32位高96位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
3. addpd
addpd XMM,XMM/m128
源存儲器內(nèi)容按四字對齊,共兩個雙精度浮點數(shù)與目的寄存器相加,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
4. addsd
addsd XMM,XMM/m64
源存儲器的低64位1個雙精度浮點數(shù)與目的寄存器的低64位1個雙精度浮點數(shù)相加,結(jié)果送入目的寄存器的低64位, 高64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
5. paddd
paddd XMM,XMM/m128
把源存儲器與目的寄存器按雙字對齊無符號整數(shù)普通相加,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
6. Paddq
paddq XMM,XMM/m128
把源存儲器與目的寄存器按四字對齊無符號整數(shù)普通相加,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
7. Paddq
paddq MM,MM/m64
把源存儲器與目的寄存器四字無符號整數(shù)普通相加,結(jié)果送入目的寄存器.
8. Pmaddwd
pmaddwd XMM,XMM/m128
把源存儲器與目的寄存器分4組進行向量點乘(有符號補碼操作),內(nèi)存變量必須對齊內(nèi)存16字節(jié)..
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7
源存儲器: b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7
目的寄存器結(jié)果: a0*b0+a1*b1 | a2*b2+a3*b3 | a4*b4+a5*b5 | a6*b6+a7*b7
9. Paddsb
paddsb XMM,XMM/m128 paddsb MM,MM/m64
源存儲器與目的寄存器按字節(jié)對齊有符號補碼飽和相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
10. paddsw
paddsw XMM,XMM/m128
源存儲器與目的寄存器按字對齊有符號補碼飽和相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
11. paddusb
paddusb XMM,XMM/m128
源存儲器與目的寄存器按字節(jié)對齊無符號飽和相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
12. Paddusw
paddusw XMM,XMM/m128
源存儲器與目的寄存器按字對齊無符號飽和相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
13. Paddb
paddb XMM,XMM/m128
源存儲器與目的寄存器按字節(jié)對齊無符號普通相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
14. Paddw
paddw XMM,XMM/m128
源存儲器與目的寄存器按字對齊無符號普通相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
15. Paddd
paddd XMM,XMM/m128
源存儲器與目的寄存器按雙字對齊無符號普通相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
16. Paddq
paddq XMM,XMM/m128
源存儲器與目的寄存器按四字對齊無符號普通相加,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
17.
1. subps
subps XMM,XMM/m128
源存儲器內(nèi)容按雙字對齊,共4個單精度浮點數(shù)與目的寄存器相減(目的減去源),結(jié)果送入目的寄存器, 內(nèi)存變量必須對齊內(nèi)存16字節(jié).
2. Subss
subss XMM,XMM/m32
源存儲器的低32位1個單精度浮點數(shù)與目的寄存器的低32位1個單精度浮點數(shù)相減(目的減去源), 結(jié)果送入目的寄存器的低32位,高96位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
3. Subpd
subpd XMM,XMM/m128
把目的寄存器內(nèi)容按四字對齊,兩個雙精度浮點數(shù),減去源存儲器兩個雙精度浮點數(shù), 結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
4. subsd
subsd XMM,XMM/m128
把目的寄存器的低64位1個雙精度浮點數(shù),減去源存儲器低64位1個雙精度浮點數(shù),結(jié)果送入目的寄存器的低64位, 高64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
5. Psubd
psubd XMM,XMM/m128
把目的寄存器與源存儲器按雙字對齊無符號整數(shù)普通相減,結(jié)果送入目的寄存器, 內(nèi)存變量必須對齊內(nèi)存16字節(jié).(目的減去源)
6. Psubq
psubq XMM,XMM/m128
把目的寄存器與源存儲器按四字對齊無符號整數(shù)普通相減,結(jié)果送入目的寄存器, 內(nèi)存變量必須對齊內(nèi)存16字節(jié).(目的減去源)
7. Psubq
psubq MM,MM/m64
把目的寄存器與源存儲器四字無符號整數(shù)普通相減,結(jié)果送入目的寄存器.(目的減去源)
8. psubsb
psubsb XMM,XMM/m128
源存儲器與目的寄存器按字節(jié)對齊有符號補碼飽和相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
9. Psubsw
psubsw XMM,XMM/m128
源存儲器與目的寄存器按字對齊有符號補碼飽和相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
10. Psubusb
psubusb XMM,XMM/m128
源存儲器與目的寄存器按字節(jié)對齊無符號飽和相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
11. Psubusw
psubusw XMM,XMM/m128
源存儲器與目的寄存器按字對齊無符號飽和相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
12. psubb
psubb XMM,XMM/m128
源存儲器與目的寄存器按字節(jié)對齊無符號普通相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
13. Psubw
psubw XMM,XMM/m128
源存儲器與目的寄存器按字對齊無符號普通相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
14. Psubd
psubd XMM,XMM/m128
源存儲器與目的寄存器按雙字對齊無符號普通相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
15. Psubq
psubq XMM,XMM/m128
源存儲器與目的寄存器按四字對齊無符號普通相減(目的減去源),內(nèi)存變量必須對齊內(nèi)存16字節(jié).
16.
1. Maxps
maxps XMM,XMM/m128
源存儲器4個單精度浮點數(shù)與目的寄存器4個單精度浮點數(shù)比較,較大數(shù)放入對應目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
2. Maxss
maxss XMM,XMM/m32
源存儲器低32位1個單精度浮點數(shù)與目的寄存器低32位1個單精度浮點數(shù)比較,較大數(shù)放入目的寄存器低32位,高96位不變內(nèi)存變量不必對齊內(nèi)存16字節(jié)
3. Minps
minps XMM,XMM/m128
源存儲器4個單精度浮點數(shù)與目的寄存器4個單精度浮點數(shù)比較,較小數(shù)放入對應目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
4. minss
minss XMM,XMM/m32
源存儲器低32位1個單精度浮點數(shù)與目的寄存器低32位1個單精度浮點數(shù)比較,較小數(shù)放入目的寄存器低32位,高96位不變內(nèi)存變量不必對齊內(nèi)存16字節(jié)
5. cmpps
cmpps XMM0,XMM1,imm8 imm8是立即數(shù)范圍是0~7
根據(jù)imm8的值進行4對單精度浮點數(shù)的比較,符合imm8的就置目的寄存器對應的32位全1,否則全0
當imm8 = 0時,目的寄存器等于原寄存器數(shù)時,置目的寄存器對應的32位全1,否則全0
imm8 = 1 時,目的寄存器小于原寄存器數(shù)時,置目的寄存器對應的32位全1,否則全0
imm8 = 2 時,目的寄存器小于等于原寄存器數(shù)時,置目的寄存器對應的32位全1,否則全0
imm8 = 4 時,目的寄存器不等于原寄存器數(shù)時,置目的寄存器對應的32位全1,否則全0
imm8 = 5 時,目的寄存器大于等于原寄存器數(shù)時,置目的寄存器對應的32位全1,否則全0
imm8 = 6 時,目的寄存器大于原寄存器數(shù)時,置目的寄存器對應的32位全1,否則全0
6. pcmpeqb
pcmpeqb XMM,XMM/m128
目的寄存器與源存儲器按字節(jié)比較,如果對應字節(jié)相等,就置目的寄存器對應字節(jié)為0ffh,否則為00h內(nèi)存變量必須對齊內(nèi)存16字節(jié).
7. Pcmpeqw
pcmpeqw XMM,XMM/m128
目的寄存器與源存儲器按字比較,如果對應字相等,就置目的寄存器對應字為0ffffh,否則為0000h, 內(nèi)存變量必須對齊內(nèi)存16字節(jié)
8. Pcmpeqd
pcmpeqd XMM,XMM/m128
目的寄存器與源存儲器按雙字比較,如果對應雙字相等,就置目的寄存器對應雙字為0ffffffffh,否則為00000000h內(nèi)存變量必須對齊內(nèi)存16字節(jié)
9. Pcmpgtb
pcmpgtb XMM,XMM/m128
目的寄存器與源存儲器按字節(jié)(有符號補碼)比較,如果目的寄存器對應字節(jié)大于源存儲器,就置目的寄存器對應字節(jié)為0ffh, 否則為00h,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
10. Pcmpgtw
pcmpgtw XMM,XMM/m128
目的寄存器與源存儲器按字(有符號補碼)比較,如果目的寄存器對應字大于源存儲器,就置目的寄存器對應字為0ffffh, 否則為0000h,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
11. Pcmpgtd
pcmpgtd XMM,XMM/m128
目的寄存器與源存儲器按雙字(有符號補碼)比較,如果目的寄存器對應雙字大于源存儲器, 就置目的寄存器對應雙字為0ffffffffh,否則為00000000h,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
1. rcpps
rcpps XMM,XMM/m128
源存儲器4個單精度浮點數(shù)的倒數(shù)放入對應目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
注:比如2.0E0的倒數(shù)為1÷2.0E0 = 5.0E-1, 這操作只有12bit的精度
2. rcpss
rcpss XMM,XMM/32
源存儲器低32位1個單精度浮點數(shù)的倒數(shù)放入目的寄存器低32位,高96位不變
3. rsqrtps
rsqrtps XMM,XMM/m128
源存儲器4個單精度浮點數(shù)的開方的倒數(shù)放入對應目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié). 比如2.0E0的開方的倒數(shù)為1÷√2.0E0 ≈ 7.0711E-1, 這操作只有12bit的精度.
4. Rsqrtss
rsqrtss XMM,XMM/32
源存儲器低32位1個單精度浮點數(shù)的開方的倒數(shù)放入目的寄存器低32位,高96位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié).
5. Pavgb
pavgb MM,MM/m64 pavgb XMM,XMM/m128
把源存儲器與目的寄存器按字節(jié)無符號整數(shù)相加,再除以2,結(jié)果四舍五入為整數(shù)放入目的寄存器, 源存儲器為m128時,內(nèi)存變量必須對齊內(nèi)存16字節(jié). 注:此運算不會產(chǎn)生溢出.
6. Pavgw
pavgw MM,MM/m64 pavgw XMM,XMM/m128
把源存儲器與目的寄存器按字無符號整數(shù)相加,再除以2,結(jié)果四舍五入為整數(shù)放入目的寄存器, 源存儲器為m128時,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
7. Sqrtpd
sqrtpd XMM,XMM/m128
源存儲器兩個雙精度浮點數(shù)的開方放入對應目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
8. Sqrtsd
sqrtsd XMM,XMM/m128
源存儲器低64位1個雙精度浮點數(shù)的開方放入目的寄存器低64位,高64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
1. Mulps
mulps XMM,XMM/m128
源存儲器內(nèi)容按雙字對齊,共4個單精度浮點數(shù)與目的寄存器相乘,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
2. Mulss
mulss XMM,XMM/32
源存儲器的低32位1個單精度浮點數(shù)與目的寄存器的低32位1個單精度浮點數(shù)相乘,結(jié)果送入目的寄存器的低32位, 高96位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
3. Mulpd
mulpd XMM,XMM/m128
源存儲器內(nèi)容按四字對齊,共兩個雙精度浮點數(shù)與目的寄存器相乘,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
4. Mulsd
mulsd XMM,XMM/m128
源存儲器的低64位1個雙精度浮點數(shù)與目的寄存器的低64位1個雙精度浮點數(shù)相乘,結(jié)果送入目的寄存器的低64位, 高64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
5. Pmuludq
pmuludq XMM,XMM/m128
把源存儲器與目的寄存器的低32位無符號整數(shù)相乘,結(jié)果變?yōu)?4位,送入目的寄存器低64位, 把源存儲器與目的寄存器的高64位的低32位無符號整數(shù)相乘,結(jié)果變?yōu)?4位,送入目的寄存器高64位內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3
源存儲器: b0 | b1 | b2 | b3
目的寄存器結(jié)果: b1*a1 | b3*a3
6. Pmuludq
pmuludq MM,MM/m64
把源存儲器與目的寄存器的低32位無符號整數(shù)相乘,結(jié)果變?yōu)?4位,送入目的寄存器.
7. pmulhw
pmulhw XMM,XMM/m128
源存儲器與目的寄存器按字對齊有符號補碼飽和相乘,取結(jié)果的高16位放入目的寄存器對應字中. 內(nèi)存變量必須對齊內(nèi)存16字節(jié)
8. pmullw
pmullw XMM,XMM/m128
源存儲器與目的寄存器按字對齊有符號補碼飽和相乘,取結(jié)果的低16位放入目的寄存器對應字中. 內(nèi)存變量必須對齊內(nèi)存16字節(jié).
9.
1. Divps
divps XMM,XMM/m128
目的寄存器共4個單精度浮點數(shù)除以源存儲器4個單精度浮點數(shù),結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
2. Divss
divss XMM,XMM/32
目的寄存器低32位1個單精度浮點數(shù)除以源存儲器低32位1個單精度浮點數(shù),結(jié)果送入目的寄存器的低32位, 高96位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié)
3. Divpd
divpd XMM,XMM/m128
目的寄存器共兩個雙精度浮點數(shù)除以源存儲器兩個雙精度浮點數(shù),結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
4. Divsd
divsd XMM,XMM/m128
目的寄存器低64位1個雙精度浮點數(shù)除以源存儲器低64位1個雙精度浮點數(shù),結(jié)果送入目的寄存器的低64位, 高64位不變,內(nèi)存變量不必對齊內(nèi)存16字節(jié).
1. Andps
andps XMM,XMM/m128
源存儲器128個二進制位'與'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
2. Orps
orps XMM,XMM/m128
源存儲器128個二進制位'或'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
3. Xorps
xorps XMM,XMM/m128
源存儲器128個二進制位'異或'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
4. Unpckhps
unpckhps XMM,XMM/m128
源存儲器與目的寄存器高64位按雙字交錯排列,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3
源存儲器: b0 | b1 | b2 | b3
目的寄存器結(jié)果: b0 | a0 | b1 | a1
5. Unpcklps
unpcklps XMM,XMM/m128
源存儲器與目的寄存器低64位按雙字交錯排列,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3
源存儲器: b0 | b1 | b2 | b3
目的寄存器結(jié)果: b2 | a2 | b3 | a3
6. Pextrw
pextrw r32,MM,imm8 pextrw r32,XMM,imm8 imm8為8位立即數(shù)(無符號)
從源寄存器中選第imm8(0~3 或 0~7)個字送入目的寄存器的低16位,高16位清零.
注:imm8范圍為 0~255,當源寄存器為'MM'時,有效值= imm8 mod 4,當目的寄存器為'XMM'時,有效值= imm8 mod 8
7. Pinsrw
pinsrw MM,r32/m32,imm8 pinsrw XMM,r32/m32,imm8
把源存儲器的低16位內(nèi)容送入目的寄存器第imm8(0~3 或 0~7)個字,其余字不變
注:imm8范圍為 0~255,當目的寄存器為'MM'時,有效值= imm8 mod 4,當目的寄存器為'XMM'時,有效值= imm8 mod 8
8. Pmaxsw
pmaxsw MM,MM/m64 pmaxsw XMM,XMM/m128
把源存儲器與目的寄存器按字有符號(補碼)整數(shù)比較,大數(shù)放入目的寄存器對應字, 源存儲器為m128時,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
9. Pmaxub
pmaxub MM,MM/m64 pmaxsw XMM,XMM/m128
把源存儲器與目的寄存器按字節(jié)無符號整數(shù)比較,大數(shù)放入目的寄存器對應字節(jié), 源存儲器為m128時,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
10. pminsw
pminsw MM,MM/m64 pmaxsw XMM,XMM/m128
把源存儲器與目的寄存器按字有符號(補碼)整數(shù)比較,較小數(shù)放入目的寄存器對應字, 源存儲器為m128時,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
11. Pminub
pminub MM,MM/m64 pmaxsw XMM,XMM/m128
把源存儲器與目的寄存器按字節(jié)無符號整數(shù)比較,較小數(shù)放入目的寄存器對應字節(jié), 源存儲器為m128時,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
12. Maxpd
maxpd XMM,XMM/m128
源存儲器兩個雙精度浮點數(shù)與目的寄存器兩個雙精度浮點數(shù)比較,較大數(shù)放入對應目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
13. Maxsd
maxsd XMM,XMM/m128
源存儲器低64位1個雙精度浮點數(shù)與目的寄存器低64位1個雙精度浮點數(shù)比較,較大數(shù)放入目的寄存器低64位,高64位不變內(nèi)存變量不必對齊內(nèi)存16字節(jié).
14. Minpd
minpd XMM,XMM/m128
源存儲器兩個雙精度浮點數(shù)與目的寄存器兩個雙精度浮點數(shù)比較,較小數(shù)放入對應目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
15. Minsd
minsd XMM,XMM/m128
源存儲器低64位1個雙精度浮點數(shù)與目的寄存器低64位1個雙精度浮點數(shù)比較,較小數(shù)放入目的寄存器低64位,高64位不變內(nèi)存變量不必對齊內(nèi)存16字節(jié).
16. Andpd
andpd XMM,XMM/m128
源存儲器128個二進制位'與'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
17. Andnpd
andnpd XMM,XMM/m128
目的寄存器128個二進制位先取'非',再'與'源存儲器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
18. Orpd
orpd XMM,XMM/m128
源存儲器128個二進制位'或'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
19. Xorpd
xorpd XMM,XMM/m128
源存儲器128個二進制位'異或'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
20. Pslldq
pslldq XMM,imm8
把目的寄存器128位按imm8(立即數(shù))指定字節(jié)數(shù)邏輯左移,移出的字節(jié)丟失.
imm8 == 1時,代表左移8位,imm8 == 2時,代表左移16位.
21. Psrldq
psrldq XMM,imm8
把目的寄存器128位按imm8(立即數(shù))指定字節(jié)數(shù)邏輯右移,移出的字節(jié)丟失.
imm8 == 1時,代表右移8位,imm8 == 2時,代表右移16位.
22. Psllw
psllw XMM,XMM/m128 psllw XMM,imm8
把目的寄存器按字由源存儲器(或imm8 立即數(shù))指定位數(shù)邏輯左移,移出的位丟失. 低字移出的位不會移入高字,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
23. Psrlw
psrlw XMM,XMM/m128 psrlw XMM,imm8
把目的寄存器按字由源存儲器(或imm8 立即數(shù))指定位數(shù)邏輯右移,移出的位丟失.
高字移出的位不會移入低字,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
24. Pslld
pslld XMM,XMM/m128 pslld XMM,XMM imm8
把目的寄存器按雙字由源存儲器(或imm8 立即數(shù))指定位數(shù)邏輯左移,移出的位丟失. 低雙字移出的位不會移入高雙字,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
25. Psrld
psrld XMM,XMM/m128 psrld XMM,imm8
把目的寄存器按雙字由源存儲器(或imm8 立即數(shù))指定位數(shù)邏輯右移,移出的位丟失.
高雙字移出的位不會移入低雙字,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
pand
pand XMM,XMM/m128
源存儲器128個二進制位'與'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié). 我發(fā)現(xiàn)與andpd功能差不多,就不知其它特性是否一樣
26. Pandn
pandn XMM,XMM/m128
目的寄存器128個二進制位先取'非',再'與'源存儲器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié)
27. Por
por XMM,XMM/m128
源存儲器128個二進制位'或'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
28. Pxor
pxor XMM,XMM/m128
源存儲器128個二進制位'異或'目的寄存器128個二進制位,結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
29. packuswb
packuswb XMM,XMM/m128 packuswb MM,MM/m64
把目的寄存器按字有符號數(shù)壓縮為字節(jié)無符號數(shù)放入目的寄存器低64位
把源寄存器按字有符號數(shù)壓縮為字節(jié)無符號數(shù)放入目的寄存器高64位
壓縮時負數(shù)變?yōu)?0h,大于255的正數(shù)變?yōu)?ffh,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7
源寄存器: b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7
目的寄存器壓縮結(jié)果: b0|b1| b2| b3| b4|b5| b6|b7| a0|a1| a2|a3| a4|a5| a6| a7
30. packsswb
packsswb XMM,XMM/m128 packsswb MM,MM/m64
把目的寄存器按字有符號數(shù)壓縮為字節(jié)有符號數(shù)放入目的寄存器低64位
把源寄存器按字有符號數(shù)壓縮為字節(jié)有符號數(shù)放入目的寄存器高64位
壓縮時小于-128負數(shù)變?yōu)?0h,大于127的正數(shù)變?yōu)?fh,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7
源寄存器: b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7
目的寄存器壓縮結(jié)果: b0|b1| b2| b3| b4|b5| b6|b7| a0|a1| a2|a3| a4|a5| a6| a7
31. packssdw
packssdw XMM,XMM/m128
把目的寄存器按雙字有符號數(shù)壓縮為字有符號數(shù)放入目的寄存器低64位
把源寄存器按雙字有符號數(shù)壓縮為字有符號數(shù)放入目的寄存器高64位
壓縮時小于-32768負數(shù)變?yōu)?000h,大于32767的正數(shù)變?yōu)?fffh,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3
源寄存器: b0 | b1 | b2 | b3
目的寄存器壓縮結(jié)果: b0 | b1 | b2 | b3 | a0 | a1 | a2 | a3
32. punpckldq
punpckldq XMM,XMM/m128
把源存儲器與目的寄存器低64位按雙字交錯排列,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3
源寄存器: b0 | b1 | b2 | b3
目的寄存器排列結(jié)果: b2 | a2 | b3 | a3
33. punpckhdq
把源存儲器與目的寄存器高64位按雙字交錯排列,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3
源寄存器: b0 | b1 | b2 | b3
目的寄存器排列結(jié)果: b0 | a0 | b1 | a1
34. punpcklwd
把源存儲器與目的寄存器低64位按字交錯排列,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7
源寄存器: b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7
目的寄存器排列結(jié)果: b4 | a4 | b5 | a5 | b6 | a6 | b7 | a7
35. punpckhwd
punpckhwd XMM,XMM/m128
把源存儲器與目的寄存器高64位按字交錯排列,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0 | a1 | a2 | a3 | a4 | a5 | a6 | a7
源寄存器: b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7
目的寄存器排列結(jié)果: b0 | a0 | b1 | a1 | b2 | a2 | b3 | a3
36. punpcklbw
punpcklbw XMM,XMM/m128
把源存儲器與目的寄存器低64位按字節(jié)交錯排列,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0|a1| a2| a3| a4|a5| a6|a7| a8|a9| aA|aB| aC|aD| aE| aF
源寄存器: b0|b1| b2| b3| b4|b5| b6|b7| b8|b9| bA|bB| bC|bD| bE| bF
目的寄存器排列結(jié)果: b8|a8| b9| a9| bA|aA| bB|aB| bC|aC| bD|aD| bE|aE| bF| aF
37. punpckhbw
把源存儲器與目的寄存器高64位按字節(jié)交錯排列,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
高64位 | 低64位
目的寄存器: a0|a1| a2| a3| a4|a5| a6|a7| a8|a9| aA|aB| aC|aD| aE| aF
源寄存器: b0|b1| b2| b3| b4|b5| b6|b7| b8|b9| bA|bB| bC|bD| bE| bF
目的寄存器排列結(jié)果: b0|a0| b1| a1| b2|a2| b3|a3| b4|a4| b5|a5| b6|a6| b7| a7
38. shufps
shufps XMM,XMM/m128,imm8
把源存儲器與目的寄存器按雙字劃分,由imm8(立即數(shù))八個二進制位(00~11,00^11,00~11,00~11)指定排列, 內(nèi)存變量必須對齊內(nèi)存16字節(jié).目的寄存器高64位放源存儲器被指定數(shù),目的寄存器低64位放目的寄存器被指定數(shù). '( )'中的都是二進制數(shù)
目的寄存器: a(11) | a(10) | a(01) | a(00)
源寄存器: b(11) | b(10) | b(01) | b(00)
目的寄存器排列結(jié)果: b(00~11) | b(00~11) | a(00~11) | a(00~11)
目的寄存器壓縮結(jié)果'( )'中的值由imm8對應的兩位二進制位指定.
例: ( 11 ) ( 10 ) ( 01 ) ( 00 ) ( 11 ) ( 10 ) ( 01 ) ( 00 )
當XMM0 = 090a0b0c 0d0e0f11 01020304 05060708 h,XMM1 = 0aabbccdd eeff1234 22334455 66778899 h, imm8 ══> (XMM1 10) (XMM1 01) (XMM0 11) (XMM0 00)
執(zhí)行shufps XMM0,XMM1,10 01 11 00 b(二進制),則XMM0 = 0eeff1234 22334455 090a0b0c 05060708 h
39. shufpd
shufpd XMM,XMM/m128,imm8(0~255) imm8(操作值) = imm8(輸入值) mod 4
把源存儲器與目的寄存器按四字劃分,由imm8(立即數(shù))4個二進制位(0~1,0^1,0~1,0~1)指定排列, 內(nèi)存變量必須對齊內(nèi)存16字節(jié).目的寄存器高64位放源存儲器被指定數(shù),目的寄存器低64位放目的寄存器被指定數(shù).
當XMM0 = 1111111122222222 3333333344444444 h
XMM1 = 5555555566666666 aaaaaaaacccccccc h,執(zhí)行shufpd XMM0,XMM1,101001 1 0 b
則XMM0 = 5555555566666666 3333333344444444 h
40. pshuflw
pshuflw XMM,XMM/m128,imm8(0~255)
先把源存儲器的高64位內(nèi)容送入目的寄存器的高64位,然后用imm8將源存儲器的低64位4個字選入目的寄存器的低64位,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
源寄存器低64位: b(11) | b(10) | b(01) | b(00)
目的寄存器低64位排列結(jié)果: b(00~11) | b(00~11) | b(00~11) | b(00~11)
當XMM0 = 1111111122222222 3333 4444 5555 6666 h
XMM1 = 5555555566666666 7777 8888 9999 cccc h,執(zhí)行pshuflw XMM0,XMM1,10 10 01 10 b
則XMM0 = 5555555566666666 8888 8888 9999 8888 h
41. pshufhw
pshufhw XMM,XMM/m128,imm8(0~255)
先把源存儲器的低64位內(nèi)容送入目的寄存器的低64位,然后用imm8將源存儲器的高64位4個字選入目的寄存器的高64位,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
源寄存器高64位: b(11) | b(10) | b(01) | b(00)
目的寄存器高64位排列結(jié)果: b(00~11) | b(00~11) | b(00~11) | b(00~11)
當XMM0 = 3333 4444 5555 6666 1111111122222222 h
XMM1 = 7777 8888 9999 cccc 5555555566666666 h,執(zhí)行pshufhw XMM0,XMM1,10 10 01 10 b
則XMM0 = 8888 8888 9999 8888 5555555566666666 h
42. pshufd
pshufd XMM,XMM/m128,imm8(0~255)
將源存儲器的4個雙字由imm8指定選入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
源寄存器: b(11) | b(10) | b(01) | b(00)
目的寄存器排列結(jié)果: b(00~11) | b(00~11) | b(00~11) | b(00~11)
當XMM1 = 11111111 22222222 33333333 44444444 h,執(zhí)行pshufd XMM0,XMM1,11 01 01 10b
則XMM0 = 11111111 33333333 33333333 22222222 h
43. cvtpi2ps
cvtpi2ps XMM,MM/m64
源存儲器64位兩個32位有符號(補碼)整數(shù)轉(zhuǎn)為兩個單精度浮點數(shù),放入目的寄存器低64中,高64位不變.
44. cvtsi2ss
cvtsi2ss XMM,r32/m32
源存儲器1個32位有符號(補碼)整數(shù)轉(zhuǎn)為1個單精度浮點數(shù),放入目的寄存器低32中,高96位不變.
45. cvtps2pi
cvtps2pi MM,XMM/m64
把源存儲器低64位兩個32位單精度浮點數(shù)轉(zhuǎn)為兩個32位有符號(補碼)整數(shù),放入目的寄存器
46. cvttps2pi
cvttps2pi MM,XMM/m64
類似于cvtps2pi,截斷取整.
47. cvtss2si
cvtss2si r32,XMM/m32
把源存儲器低32位1個單精度浮點數(shù)轉(zhuǎn)為1個32位有符號(補碼)整數(shù),放入目的寄存器.
48. cvttss2si
cvttss2si r32,XMM/m32
類似cvtss2si,截斷取整.
49. cvtps2pd
cvtps2pd XMM,XMM/m64
把源存儲器低64位兩個單精度浮點數(shù)變成兩個雙精度浮點數(shù),結(jié)果送入目的寄存器.
50. cvtss2sd
cvtss2sd XMM,XMM/m32
把源存儲器低32位1個單精度浮點數(shù)變成1個雙精度浮點數(shù),結(jié)果送入目的寄存器的低64位,高64位不變.
51. cvtpd2ps
把源存儲器兩個雙精度浮點數(shù)變成兩個單精度浮點數(shù),結(jié)果送入目的寄存器的低64位,高64位清零, 內(nèi)存變量必須對齊內(nèi)存16字節(jié).
^特殊狀態(tài) ^3.14E5 (表示負無窮大)
52. cvtsd2ss
cvtsd2ss XMM,XMM/m64
把源存儲器低64位1個雙精度浮點數(shù)變成1個單精度浮點數(shù),結(jié)果送入目的寄存器的低32位,高96位不變.
53. cvtpd2pi
cvtpd2pi MM,XMM/m128
把源存儲器兩個雙精度浮點數(shù)變成兩個雙字有符號整數(shù),結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié). 如果結(jié)果大于所能表示的范圍,那么轉(zhuǎn)化為80000000h(正數(shù)也轉(zhuǎn)為此值).
54. cvttpd2pi
cvttpd2pi MM,XMM/m128
類似于cvtpd2pi,截斷取整.
55. cvtpi2pd
cvtpi2pd XMM,MM/m64
把源存儲器兩個雙字有符號整數(shù)變成兩個雙精度浮點數(shù),結(jié)果送入目的寄存器.
56. cvtpd2dq
cvtpd2dq XMM,XMM/m128
把源存儲器兩個雙精度浮點數(shù)變成兩個雙字有符號整數(shù)(此運算與cvtpd2pi類似但目的寄存器變?yōu)閄MM), 結(jié)果送入目的寄存器的低64位,高64位清零,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
57. cvttpd2dq
cvttpd2dq XMM,XMM/m128
類似于cvtpd2dq,為截斷取整.
58. cvtdq2pd
cvtdq2pd XMM,XMM/m128
把源存儲器低64位兩個雙字有符號整數(shù)變成兩個雙精度浮點數(shù),結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
59. cvtsd2si
cvtsd2si r32,XMM/m64
把源存儲器低64位1個雙精度浮點數(shù)變成1個雙字有符號整數(shù),結(jié)果送入目的寄存器.
60. cvttsd2si
cvttsd2si r32,XMM/m64
類似于cvtsd2si,截斷取整.
61. cvtsi2sd
cvtsi2sd XMM,r32/m32
把源存儲器1個雙字有符號整數(shù)變成1個雙精度浮點數(shù),結(jié)果送入目的寄存器的低64位,高64位不變.
62. cvtps2dq
cvtps2dq XMM,XMM/m128
把源存儲器4個單精度浮點數(shù)變成4個雙字有符號整數(shù),結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
63. cvttps2dq
cvttps2dq XMM,XMM/m128
類似于cvtps2dq,截斷取整.
64. cvtdq2ps
cvtdq2ps XMM,XMM/m128
把源存儲器4個雙字有符號整數(shù)變成4個單精度浮點數(shù),結(jié)果送入目的寄存器,內(nèi)存變量必須對齊內(nèi)存16字節(jié).
1. MMX指令有8個64位寄存器(MM0~MM7),不過可惜都是借的FPU的, FPU原來有8個80位寄存器(st(0)~st(7)),現(xiàn)在用在了MMX上,所以用之后要加上一條EMMS指令,用以復位.
posted on 2010-08-20 17:53 大海 閱讀(3863) 評論(1) 編輯 收藏 引用 所屬分類: 匯編語言
聯(lián)系客服