汇编 SSE4.2 指令简介

简介: 有别于SSE4.1主要针对加快处理器的多媒体处理,例如图形显示、视频编码及处理、3D图像处理、计算机游戏等,SSE4.2主要针对字符串和文本处理指令应用,细分为STTNI及ATA2个组别;STTNI主要是加速字符串及文本处理,例如XML应用进行高速查找及对比,相较以软件运算,SSE4.2提供约3.8倍的速度,提升及节省2.7倍指令周期,对服务器应用有显著效能改善。

String and Text Processing
PCMPESTRI

PCMPESTRI xmm1, xmm2/m128, imm8
        Perform a packed comparison of string data with explicit lengths, generating an index, and storing the result in ECX.

对具有显式长度的字符串数据执行打包比较,生成索引,并将结果存储在ECX中。

指令中的xmm1寄存器包含将要进行比较的字符串数据,而xmm2/m128可以包含另一个字符串或者引用包含字符串数据的内存位置。imm8参数指定了比较模式,确定要执行的比较类型(例如相等、小于、大于)。

比较完成后,第一个不匹配或匹配的索引将被存储在ECX寄存器中。这个索引表示在字符串中找到比较结果的位置。它可以用于进一步处理或分析字符串数据。

imm8:

        

  • 0:相等
  • 1:小于
  • 2:小于或等于
  • 3:未使用
  • 4:大于
  • 5:不等于
  • 6:大于或等于

索引:是用来定位或标识数据位置的数值。在字符串比较中,索引通常表示第一个不匹配或匹配的位置,帮助确定在字符串中找到比较结果的具体位置。索引提供了对数据位置的直接引用,方便后续处理或分析。

PCMPESTRM

PCMPESTRM xmm1, xmm2/m128, imm8
        Perform a packed comparison of string data with explicit lengths, generating a mask, and storing the result in XMM0.

对具有显式长度的字符串数据执行打包比较,生成掩码,并将结果存储在XMM0中。

mm1寄存器包含将要进行比较的字符串数据,而xmm2/m128可以包含另一个字符串或者引用包含字符串数据的内存位置。imm8参数指定了比较模式,确定要执行的比较类型(例如相等、小于、大于)。

比较完成后,根据比较结果生成一个掩码,并将其存储在XMM0寄存器中。这个掩码表示了被比较的字符串中每个字符或字节的比较结果。

掩码:是一种用来标记或筛选数据的二进制序列。在字符串比较中,掩码可以表示每个字符或字节的比较结果,通常用于指示匹配、不匹配或其他比较条件。掩码的每个位对应于相应位置的比较结果,可以帮助识别特定模式或条件

  • 0:相等
  • 1:小于
  • 2:小于或等于
  • 3:未使用
  • 4:大于
  • 5:不等于
  • 6:大于或等于
PCMPISTRI

PCMPISTRI xmm1, xmm2/m128, imm8
Perform a packed comparison of string data  with implicit lengths, generating an index, and 
storing the result in ECX.

xmm1寄存器包含将要进行比较的字符串数据,而xmm2/m128可以包含另一个字符串或者引用包含字符串数据的内存位置。imm8参数指定了比较模式,确定要执行的比较类型(例如相等、小于、大于)。

比较完成后,第一个不匹配或匹配的索引将被存储在ECX寄存器中。这个索引表示在字符串中找到比较结果的位置。它可以用于进一步处理或分析字符串数据。

PCMPISTRM

PCMPISTRM xmm1, xmm2/m128, imm8
Perform a packed comparison of string data with implicit lengths, generating a mask, and 
storing the result in XMM0.

xmm1寄存器包含将要进行比较的字符串数据,而xmm2/m128可以包含另一个字符串或者引用包含字符串数据的内存位置。imm8参数指定了比较模式,确定要执行的比较类型(例如相等、小于、大于)。

比较完成后,根据比较结果生成一个掩码,并将其存储在XMM0寄存器中。这个掩码表示了被比较的字符串中每个字符或字节的比较结果。

Packed Comparison SIMD integer
PCMPGTQ

PCMPGTQ xmm1,xmm2/m128
 Compare packed signed qwords in xmm2/m128 and xmm1 for greater than.

将对xmm1和xmm2/m128中的每对64位整数进行比较,如果xmm2/m128中的整数大于xmm1中的整数,则相应结果位将被设置为1;否则,结果位将被设置为0。

举个例子,如果我们有两个 xmm 寄存器 xmm1 和 xmm2 分别包含以下值:

xmm1: [10, 20, 30, 40]

xmm2: [15, 25, 35, 45]

执行 “PCMPGTQ xmm1, xmm2” 指令后,xmm1 寄存器中的值将根据以下比较结果进行设置:

  • 如果 xmm2 中对应位置的值大于 xmm1 中的值,则对应的位将被设置为全1。
  • 如果 xmm2 中对应位置的值小于或等于 xmm1 中的值,则对应的位将被设置为全0。

通过检查 xmm1 寄存器中的值,我们可以了解到 xmm2 中的值与 xmm1 中的值的比较结果。

  • 23
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值