用以加速空终止字符串操作的方法技术

技术编号:5082717 阅读:297 留言:0更新日期:2012-04-11 18:40
一种方法读取且比较第一与第二寄存器值,每一寄存器值具有至少两个字节的大小。如果出现以下情况,则第三寄存器指示匹配:(1)所述第一寄存器值中的字节等于(或另一选择为,不等于)所述第二寄存器值中的对应字节,或(2)如果所述第一寄存器值中的字节为零。接下来,将第四寄存器值设定为以下各项中的一者:(1)如果所述第一与第二寄存器值中的对应字节相等(或另一选择为,不相等),则为匹配字节的计数,或(2)如果所述第一与第二寄存器值中的所述对应字节不相等(或另一选择为,相等),则为0与n-1之间的范围之外的数。所述值n为等于所述第一与第二寄存器值中的字节数的整数。

【技术实现步骤摘要】
【国外来华专利技术】
如所属领域的技术人员应了解,一些编程语言(包含C及C++语言)产生空终止 字节串。本专利技术通过提议一指令族以加速处理标准串函数来利用C及C++编程语言的此特 性。
技术介绍
如所属领域的技术人员应明了,C及C++编程语言产生为空终止字符的标准串。空 终止字节串是其中串的末尾是用0字节指示的串。当处理串时,某些密钥核的性能可确定整个应用程序的性能。所述函数通常是 标准库(具体来说,ISO C标准的章节7. 21)中所定义的函数,例如=(I)Strlen函数,(2) strcmp 函数,(3) strcpy 函数及(4)strchr 函数。执行所述函数中的任一者可均需要大量处理器时间。因此,此项技术中需要有助 于减少处理时间的方法。
技术实现思路
本专利技术提供用以减少某些指令的总处理时间的至少两种方法。具体来说,本专利技术至少部分地基于由除其它之外的C及C++编程语言产生的选定 字节串的空终止字符。本专利技术提议由于空终止字符串而准许加速所述函数的最小指令集。换句话说,本 专利技术的一个方面认识到空终止字符串的存在且利用所述空终止字符串。在这样做时,本发 明增加处理速度及效率。在本专利技术的一个所提议指令集中,本专利技术提供包含读取第一及第二寄存器值的方 法,所述第一及第二寄存器值两者在长度上至少为两个字节。在此方法中,所述第一与第二 寄存器值具有相同字的节数。因此,将所述第一寄存器值的字节与所述第二寄存器值的字 节相比较是简单的任务。在比较所述第一与第二寄存器值之后,如果出现以下情况所述方 法将第三寄存器设定为指示匹配(1)所述第一寄存器值中的字节等于所述第二寄存器值 中的对应字节,或(2)如果所述第一寄存器值中的字节为零。另外,所述方法将第四寄存器 值设定为(1)如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应 字节,则为匹配字节的计数,或(2)如果所述第一寄存器值中的所述字节不等于所述第二 寄存器值中的所述对应字节时,则为包括0与n-1之间的数的值范围之外的数。如应明了, η为对应于所述第一与第二寄存器值中的字节数的整数。在此方法的替代方案中,本专利技术还提供其中读取第一及第二寄存器值的方法,所5述第一与第二寄存器值两者在长度上至少为两个字节。如在所述第一实例中,预期所述第 一与第二寄存器值为相同长度。将所述第一寄存器值的所述字节与所述第二寄存器值的 所述字节相比较。如果出现以下情况将第三寄存器设定为指示匹配(1)所述第一寄存器 值中的字节不等于所述第二寄存器值中的对应字节,或(2)所述第一寄存器值中的字节为 零。将第四寄存器值设定为(1)如果所述第一寄存器值中的所述字节不等于所述第二寄存 器值中的所述对应字节,则为匹配字节的计数,或(2)如果所述第一寄存器值中的字节等 于所述第二寄存器值中的所述对应字节,则为包括0与n-1之间的数的值范围之外的数。如 前所述,η为对应于所述第一与第二寄存器中的任一者中的字节数的整数。本专利技术还提供如果所述处理器是高字节置前,则从最高有效字节到最低有效字节 比较所述第一寄存器值与所述第二寄存器值的所述字节。本专利技术的另一方面提供如果所述处理器为低字节置前,则从最低有效字节到最高 有效字节比较所述第一寄存器值与所述第二寄存器值的所述字节。关于所述第三寄存器,本专利技术的一个方面是将所述第三寄存器提供为具有一个位 的条件旗标寄存器。本专利技术进一步提供所述第三寄存器为具有多于一个位的条件寄存器。在此实例 中,可将所述第三寄存器的数个位中的一个位设定为指示所述匹配。本专利技术的又一方面提供所述第三寄存器可以为包括数个位的条件寄存器。在此变 化形式中,相依于所述第一寄存器值中的所述字节是等于所述第二寄存器值中的所述对应 字节还是所述第一寄存器值中的第一字节为零,所述第三寄存器可保留不同值。关于所述第四寄存器值,如果所述第一寄存器值中的所述字节不等于所述第二寄 存器值中的所述对应字节,则本专利技术准许将所述值设定为-1。本专利技术的另一方面提供同时设定所述第三及第四寄存器值。本专利技术的一个进一步方面提供至少两个单独寄存器与所述处理器协作来执行所 述方法。本专利技术的又一方面预期所述处理器可以预定字节边界开始往寄存器中加载。在另一变化形式中,将所述第一寄存器值的所述字节仅与所述第二寄存器值的最 低字节相比较。在又一进一步变化形式中,本专利技术包含如果不指示匹配,则修改所述第三寄存器。在本专利技术的另一方面中,所述第三寄存器可以为包含一个位的条件旗标寄存器, 当指示所述匹配时可设定所述一个位。另一选择为,当不指示所述匹配时,可清除所述位。本专利技术的一个方面提供其中所述第三寄存器为具有一个位的条件旗标寄存器的 方法,当指示所述匹配时可清除所述一个位。另一选择为,当指示所述匹配时,可设定所述 位。在本专利技术的另一方面中,所述第三寄存器可以为具有多个位的条件寄存器。当指 示所述匹配时,可设定所述多个位中的一个位,或当不指示所述匹配时,可清除所述位。在本专利技术的又一方面中,所述第三寄存器可以为具有数个位的条件寄存器。当指 示所述匹配时,可清除所述数个位中的一个位。另一选择为,当不指示所述匹配时,可设定 所述位。从以下论述将明了本专利技术的又进一步方面。附图说明现在将结合随附的图式描述本专利技术,所述图式中图1是本专利技术方法的第一实施例的第一部分;图2是图1中所图解说明的方法的第一实施例的第二部分;图3是本专利技术方法的第二实施例的第一部分;且图4是图1中所图解说明的方法的第二实施例的第二部分。具体实施例方式现在将结合各种所预期实施例描述本专利技术。所述实施例打算对本专利技术进行说明且 未对本专利技术的范围加以任何限制。因此,如所属领域的技术人员应了解,存在可在不背离本 专利技术的范围及精神的情形下采用的众多变化形式及等效内容。所述变化形式及等效内容中 的每一者也打算由本专利技术的范围囊括。出于描述本专利技术的目的,已进行了数种假设。第一,假设处理器中的指令能够同时 设定寄存器及条件旗标或位。第二,假设处理器中的指令能够读取至少2个单独寄存器。第 三,假设处理器具有多字节寄存器(例如32位寄存器)。第四,假设处理器可在任何字节边 界处开始往寄存器中加载。此第四假设对于实施本专利技术并不是必须的。然而,此第四假设 极大地简化了对本专利技术的说明,如下文显而易见。对于本专利技术,提议两种指令。第一种指令称为ffzbe指令。第二种指令称为ffzbn 指令。字母“ffzbe”打算指代“找到首位零或字节相等”。字母“ffzbn”打算指代“找到首 位零或字节不相等”。当然,对于所述指令的名字的选择对于本专利技术并不重要。可选择任何 其它名字,此并不背离本专利技术的范围。ffzbe 指令ffzbe指令包含以下操作(1)读取两个寄存器值,RA及RB,(2)写入寄存器值 RT及条件位/旗标,(3)相依于处理器是高字节置前还是低字节置前,从最高有效字节 (“MSB”)到最低有效字节(“LSB”)或从LSB到MSB检查字节RA及RB, (4)如果RA中的 字节的值为零或等于RB的对应字节,则将条件位中的标记或旗标设定为指示匹配,(5)如 果第一匹配是相等字节的匹配,则将RT设定为匹配字节的计数,及(6)否则,将RT的值设 定为在范围0、. . . num_bytes_in_register-Ι之外的值。一个此类本文档来自技高网...

【技术保护点】
一种由处理器执行的方法,其包括:  读取第一寄存器值,其中所述第一寄存器值包括至少两个字节;  读取第二寄存器值,其中所述第二寄存器值包括至少两个字节,  其中所述第一寄存器值与所述第二寄存器值两者包括相同的字节数;  将所述第一寄存器值的所述字节与所述第二寄存器值的所述字节相比较;  如果出现以下情况,则将第三寄存器设定为指示匹配  (1)所述第一寄存器值中的字节等于所述第二寄存器值中的对应字节,或  (2)如果所述第一寄存器值中的字节为零;及  将第四寄存器值设定为  (1)如果所述第一寄存器值中的所述字节等于所述第二寄存器值中的所述对应字节,则为匹配字节的计数;或  (2)如果所述第一寄存器值中的所述字节不等于所述第二寄存器值中的所述对应字节,则为包括0与n-1之间的数的值范围之外的数,  其中n为对应于所述第一及第二寄存器值中的字节数的整数。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:马杨穆德吉尔
申请(专利权)人:阿斯奔收购公司
类型:发明
国别省市:US[美国]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1