精易论坛
标题:
文本_逐字分割_快速 欢迎测试
[打印本页]
作者:
jr21066
时间:
2018-9-4 23:56
标题:
文本_逐字分割_快速 欢迎测试
处理超长文本时,速度会有所提升
子程序名
返回值类型
公开
备 注
文本_逐字分割_快速
整数型
超长文本计算时有优势
参数名
类 型
参考
可空
数组
备 注
参_内容
文本型
参_文本数组
文本型
变量名
类 型
静态
数组
备 注
返回值
文本型
返回值 =
取空白文本
(
取文本长度
(
参_内容
)
× 2
)
置入代码
(
{
139, 69, 8, 139, 48, 139, 125, 252, 172, 60, 0, 116, 42, 60, 32, 116, 247, 60, 9, 116, 243, 60, 13, 116, 239, 60, 10, 116, 235, 168, 128, 116, 16, 60, 161, 117, 10, 134, 224, 172, 60, 161, 116, 220, 134, 224, 78, 170, 172, 170, 176, 9, 170, 235, 209, 49, 192, 170
}
)
参_文本数组 =
分割文本
(
返回值,
到文本
(
{
9
}
)
,
)
返回
(
取数组成员数
(
参_文本数组
)
)
' mov eax,dword ptr
[
ebp+08h
]
取参数文本地址
' mov esi,dword ptr
[
eax
]
' mov edi ,dword ptr
[
ebp-04h
]
取变量文本地址
' begin:
' lodsb
' cmp al,0 内容结束退出
' jz addrend
' cmp al,32 不要空格
' jz begin
' cmp al,9 不要制表符
' jz Begin
' cmp al,13 不要回车
' jz begin
' cmp al,10 不要换行
' jz begin
' test al,10000000b 单字符跳
' jz addr2
' cmp al,161 判断是否全角空格
' jnz addr3
' xchg ah,al 保存al数值
' lodsb
' cmp al,161
' jz begin 不要全角空格
' xchg ah,al 恢复al数值
' dec esi
' addr3:
' stosb
' lodsb
' addr2:
' stosb
' mov al,9 写分割符
' stosb
' jmp begin
' addrend:
' xor eax,eax 写结束标志
' stosb
.版本 2
.子程序 文本_逐字分割_快速, 整数型, , 超长文本计算时有优势
.参数 参_内容, 文本型
.参数 参_文本数组, 文本型, 数组
.局部变量 返回值, 文本型
返回值 = 取空白文本 (取文本长度 (参_内容) × 2)
置入代码 ({ 139, 69, 8, 139, 48, 139, 125, 252, 172, 60, 0, 116, 42, 60, 32, 116, 247, 60, 9, 116, 243, 60, 13, 116, 239, 60, 10, 116, 235, 168, 128, 116, 16, 60, 161, 117, 10, 134, 224, 172, 60, 161, 116, 220, 134, 224, 78, 170, 172, 170, 176, 9, 170, 235, 209, 49, 192, 170 })
参_文本数组 = 分割文本 (返回值, 到文本 ({ 9 }), )
返回 (取数组成员数 (参_文本数组))
' mov eax,dword ptr [ebp+08h] 取参数文本地址
' mov esi,dword ptr [eax]
' mov edi ,dword ptr [ebp-04h] 取变量文本地址
' begin:
' lodsb
' cmp al,0 内容结束退出
' jz addrend
' cmp al,32 不要空格
' jz begin
' cmp al,9 不要制表符
' jz Begin
' cmp al,13 不要回车
' jz begin
' cmp al,10 不要换行
' jz begin
' test al,10000000b 单字符跳
' jz addr2
' cmp al,161 判断是否全角空格
' jnz addr3
' xchg ah,al 保存al数值
' lodsb
' cmp al,161
' jz begin 不要全角空格
' xchg ah,al 恢复al数值
' dec esi
' addr3:
' stosb
' lodsb
' addr2:
' stosb
' mov al,9 写分割符
' stosb
' jmp begin
' addrend:
' xor eax,eax 写结束标志
' stosb
作者:
cf2006a
时间:
2018-9-5 09:12
学习了,慢慢消化
作者:
大家好我是新手
时间:
2018-9-5 15:46
大神如此牛逼呢
作者:
hanson1025
时间:
2018-9-5 17:45
这个厉害了!!!!!!!!!!!!!!!
作者:
cf2006a
时间:
2018-9-6 16:46
也是 返回 分割 到数组 有没有汇编里直接分割到数组的例子 写个
作者:
jr21066
时间:
2018-9-6 17:06
cf2006a 发表于 2018-9-6 16:46
也是 返回 分割 到数组 有没有汇编里直接分割到数组的例子 写个
在看.不一定行.
如果有内存分配就不弄了.
为了一点点快把兼容性就搞没了.
作者:
cf2006a
时间:
2018-9-6 20:51
lodsb 这个命令没有直接 找字节集 循环快 用byte【】,0x0循环会更快
作者:
阿宝 666
时间:
2018-9-7 22:32
作者:
yunying
时间:
2018-9-8 20:55
提示:
作者被禁止或删除 内容自动屏蔽
作者:
longsheng16
时间:
2018-10-31 10:28
谢谢谢谢,谢谢分享
作者:
小清晰2020
时间:
2020-9-14 14:32
测试下,好用不
作者:
gxfc900
时间:
2023-10-2 09:45
学习了,慢慢消化
欢迎光临 精易论坛 (https://125.confly.eu.org/)
Powered by Discuz! X3.4