gpt4 book ai didi

algorithm - 在程序集中查找子字符串

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:25:43 25 4
gpt4 key购买 nike

我想知道是否有比我目前打算做的更有效的方法来在汇编中查找子字符串。

我知道字符串指令“scansb/scasw/scads”可以将 EAX 中的值与 EDI 寻址的值进行比较。但是,据我所知,使用这种方法我一次只能搜索一个字符。

所以,如果我想在字符串“pleasehelpme”中找到“help”的位置,我可以使用 scansb 来找到 h 的偏移量,然后跳转到另一个函数,在那里我比较余数。如果余数不正确,我会跳回 scansb 并再次尝试搜索,这次是在前一个偏移标记之后。

但是,我不想这样做,然后发现有更有效的方法。有什么建议吗?提前致谢

最佳答案

确实有更有效的方法,无论是在指令方面还是在算法方面。

如果您有硬件,您可以使用 sse 4.2 比较字符串函数,速度非常快。查看概述 http://software.intel.com/sites/products/documentation/studio/composer/en-us/2009/compiler_c/intref_cls/common/intref_sse42_comp.htm和一个使用 C 内部函数的示例 http://software.intel.com/en-us/articles/xml-parsing-accelerator-with-intel-streaming-simd-extensions-4-intel-sse4/

如果您有长子字符串或多个搜索模式,Boyer-Moore , Knuth-Morris-PrattRabin-Karp算法可能更有效。

关于algorithm - 在程序集中查找子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4364692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com