汇编 SSE4.2 指令简介

汇编 SSE4.2 指令简介

码农世界 2024-05-17 前端 57 次浏览 0个评论

简介: 有别于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 中的值的比较结果。

转载请注明来自码农世界,本文标题:《汇编 SSE4.2 指令简介》

百度分享代码,如果开启HTTPS请参考李洋个人博客
每一天,每一秒,你所做的决定都会改变你的人生!

发表评论

快捷回复:

评论列表 (暂无评论,57人围观)参与讨论

还没有评论,来说两句吧...

Top