开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

楼主: 学习委员
收起左侧

[已解决] 快速截取字符

 关闭 [复制链接]
结帖率:43% (3/7)
发表于 2025-2-22 20:28:36 | 显示全部楼层   江苏省徐州市
萧楚楠 发表于 2025-2-22 19:05
知道你在说啥,用这个嘎嘎快,汇编,而且不会因为双字节字符截断
  
[/quote]
[e=0].版本 2
子程序名返回值类型公开备 注
取文本长度_ASM整数型 取文本型数据的长度,不包含结束0。自动选择版本:AVX2、SSE2、80386
参数名类 型参考可空数组备 注
参_文本通用型文本变量或文本指针
判断 (全_AVX2)
' AVX2对齐版
置入代码 ({ 51, 192, 139, 85, 8, 139, 18, 133, 210, 116, 60, 139, 202, 131, 226, 224, 197, 253, 87, 192, 197, 253, 116, 10, 197, 253, 215, 193, 131, 225, 31, 211, 232, 15, 188, 192, 117, 30, 139, 194, 3, 209, 197, 253, 87, 192, 131, 192, 32, 197, 253, 116, 8, 197, 253, 215, 201, 133, 201, 116, 241, 15, 188, 201, 43, 202, 3, 193, 197, 248, 119, 93, 194, 4, 0 })
' *** 缩略程序块 ***
' xor eax,eax
' mov edx,dword ptr [ebp+0x8]
' mov edx,dword ptr [edx]
' test edx,edx
' je end_2
' mov ecx,edx
' and edx,0xFFFFFFE0
' vxorpd ymm0,ymm0,ymm0
' vpcmpeqb ymm1,ymm0,yword ptr [edx]
' vpmovmskb eax,ymm1
' and ecx,0x1F
' shr eax,cl
' bsf eax,eax
' jne end_1
' mov eax,edx
' add edx,ecx
' vxorpd ymm0,ymm0,ymm0
' loop_:
' add eax,0x20
' vpcmpeqb ymm1,ymm0,yword ptr [eax]
' vpmovmskb ecx,ymm1
' test ecx,ecx
' je loop_
' bsf ecx,ecx
' sub ecx,edx
' add eax,ecx
' end_1:
' vzeroupper
' end_2:
' pop ebp
' ret 0x4

判断 (全_SSE2)
' SSE2对齐版
置入代码 ({ 51, 192, 139, 85, 8, 139, 18, 133, 210, 116, 61, 139, 202, 131, 226, 240, 102, 15, 239, 192, 102, 15, 116, 2, 102, 15, 215, 192, 131, 225, 15, 211, 232, 15, 188, 192, 117, 34, 139, 194, 3, 209, 102, 15, 239, 192, 131, 192, 16, 102, 15, 111, 8, 102, 15, 116, 200, 102, 15, 215, 201, 133, 201, 116, 237, 15, 188, 201, 43, 202, 3, 193, 93, 194, 4, 0 })
' *** 缩略程序块 ***
' xor eax,eax
' mov edx,dword ptr [ebp+0x8]
' mov edx,dword ptr [edx]
' test edx,edx
' je end_
' mov ecx,edx
' and edx,0xFFFFFFF0
' pxor xmm0,xmm0
' pcmpeqb xmm0,xmmword ptr [edx]
' pmovmskb eax,xmm0
' and ecx,0xF
' shr eax,cl
' bsf eax,eax
' jne end_
' mov eax,edx
' add edx,ecx
' pxor xmm0,xmm0
' loop_:
' add eax,0x10
' movdqa xmm1,xmmword ptr [eax]
' pcmpeqb xmm1,xmm0
' pmovmskb ecx,xmm1
' test ecx,ecx
' je loop_
' bsf ecx,ecx
' sub ecx,edx
' add eax,ecx
' end_:
' pop ebp
' ret 0x4

' 80386版
置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 116, 44, 141, 80, 3, 139, 40, 131, 192, 4, 141, 141, 255, 254, 254, 254, 247, 213, 35, 205, 129, 225, 128, 128, 128, 128, 116, 233, 247, 193, 128, 128, 0, 0, 117, 6, 193, 233, 16, 131, 192, 2, 208, 225, 27, 194, 93, 194, 4, 0 })
' *** 缩略程序块 ***
' mov eax,dword ptr [ebp+0x8]
' mov eax,dword ptr [eax]
' test eax,eax
' jz _end
' lea edx,dword ptr [eax+0x3]
' label_b:
' mov ebp,dword ptr [eax]
' add eax,4
' lea ecx,dword ptr [ebp-0x1010101]
' not ebp
' and ecx,ebp
' and ecx,0x80808080
' jz label_b
' test ecx,0x8080
' jnz label_f
' shr ecx,16
' add eax,2
' label_f:
' shl cl,1
' sbb eax,edx
' _end:
' pop ebp
' retn 0x4

返回 (0)

回复

使用道具 举报

签到天数: 5 天

发表于 2025-2-22 20:59:09 | 显示全部楼层   河北省张家口市
算法艺术家 发表于 2025-2-22 18:56
[e=3].版本 2
.支持库 spec

CharNext子程序源码没贴
回复

使用道具 举报

签到天数: 5 天

发表于 2025-2-22 20:59:30 | 显示全部楼层   河北省张家口市
最烦起名字 发表于 2025-2-22 20:28
[e=0].版本 2

.子程序 取文本长度_ASM, 整数型, , 取文本型数据的长度,不包含结束0。自动选择版本:AVX ...

你要取右边的?
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 13 天

发表于 2025-2-22 21:13:11 | 显示全部楼层   辽宁省丹东市
萧楚楠 发表于 2025-2-22 20:59
CharNext子程序源码没贴
  
DLL命令名返回值类型公开备 注
CharNext整数型 取文本左右EX
DLL库文件名:
 
在DLL库中对应命令名:
CharNextA
参数名类 型传址数组备 注
lpsz整数型
DLL命令名返回值类型公开备 注
CharPrev整数型 取文本左右EX
DLL库文件名:
 
在DLL库中对应命令名:
CharPrevA
参数名类 型传址数组备 注
lpsz整数型
lpszCurrent整数型

回复

使用道具 举报

结帖率:43% (3/7)

签到天数: 2 天

发表于 2025-2-22 21:18:25 | 显示全部楼层   江苏省徐州市

是啊兄弟,来个ASM吧,我从别的源码里抠出来一个取文本长度的ASM不知道对你有没有用
回复

使用道具 举报

签到天数: 5 天

发表于 2025-2-22 21:30:35 | 显示全部楼层   河北省张家口市
算法艺术家 发表于 2025-2-22 21:13
[e=3].版本 2

.DLL命令 CharNext, 整数型, , "CharNextA", 公开, 取文本左右EX

挺不错的大佬,我的略微快几倍
回复

使用道具 举报

签到天数: 5 天

发表于 2025-2-22 21:30:47 | 显示全部楼层   河北省张家口市
最烦起名字 发表于 2025-2-22 21:18
是啊兄弟,来个ASM吧,我从别的源码里抠出来一个取文本长度的ASM不知道对你有没有用 ...

稍等现在写
回复

使用道具 举报

结帖率:43% (3/7)

签到天数: 2 天

发表于 2025-2-22 21:38:29 | 显示全部楼层   江苏省徐州市

感谢大佬
回复

使用道具 举报

结帖率:100% (2/2)

签到天数: 13 天

发表于 2025-2-22 21:42:59 | 显示全部楼层   辽宁省丹东市
萧楚楠 发表于 2025-2-22 21:30
挺不错的大佬,我的略微快几倍

汇编肯定快,但是缺点很明显,我完全看不懂
回复

使用道具 举报

签到天数: 5 天

发表于 2025-2-22 22:17:34 | 显示全部楼层   河北省张家口市
@算法艺术家 @最烦起名字 没事大佬,我注释写详尽了,可以看看,我也是今天才开始学汇编

补充内容 (2025-2-22 22:18):
刚才在打王者,没看到

汇编模块.e

25.7 KB, 下载次数: 5

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表