ATT学习笔记汇编之高级特性

高级特性:SIMD single instruction multiple data单指令多数据SIMD扩展 Streaming SIMD Extension (SSE)流化扩展第二实现 SSE2第三 SSE3MMX 对整数执行SIMD操作64位打包字节,字,双字整数,MMx 0-7 映射到FPU寄存器R0-7使用FSAVE,FXSAVE指令将FPU寄存器保存到内存中,防止和浮点指令混淆。SSE主要对浮点数执行SIMD操作。128位打包的单精度浮点数据。8个128位寄存器XMM0-7SSE2 128位打包整型,浮点型。SSE3 在SSE2基础上添加了更多指令。CPUID指令检测是否支持SIMDEDX 23(位) 支持MMXEDX 25 支持SSEEDX 26 SSE2ECX 0 SSE3使用MMX指令步骤:从整数值创建打包整数值。把打包整数值加载到MMX寄存器中。对打包整数值执行MMX数学操作。从MMX寄存器获得结果,存放到内存位置中。.section .datapackedvalue1: .byte 10 , 20 , -30 , 40 , 50 , 60 , -70 , 80packedvalue2: .short 10 , 20 , 30 , 40packedvalue3: .int 10 , 20.section .text.globl _start_start: movq packedvalue1 , %mm0 movq packedvalue2 , %mm1 movq packedvalue3 , %mm2movq可以把数据从mmx寄存器传送到64位内存中。处理溢出:环绕运算 溢出截断带符号饱和运算 无符号饱和运算 溢出取最大 最小值PADDB 使用环绕的打包字节整数加法PADDWPADDDPADDSB 使用带符号饱和的打包字节整数加法PADDSWPADDUSBPADDUSWPSUBB….PSUBUSWPADDSB source , destinationPADDSB %mm1 , %mm0MMX乘法PMULL 把每对打包字整数相乘,把结果的低16位存放在目标寄存器。PMULH 把高16位存放到目标寄存器中无符号:PMULLUW PMULLHUWMMX逻辑和移位指令PAND PANDN 对目标操作数执行非(NOT)操作,然后对源和目的操作数执行逻辑与操作。PORPXORPSLL 逻辑左移,用0填充PSRA 逻辑右移,0填充MMX比较指令PCMPEQB 比较打包字节整数值的相等性PCMPEQWPCMPEQDPCMPGTBPCMPGTWPCMPGTD满足条件各位全设为1,否则全部位0SSE指令movaps 把4个对准的单精度浮点型传送到XMM或者内存movups 不对准movss

,家门前的那条小路,到底通向了什么样的远方呢?

ATT学习笔记汇编之高级特性

相关文章:

你感兴趣的文章:

标签云: