精易论坛

标题: 汇编版 子文本替换 [打印本页]

作者: z3201    时间: 2022-11-15 19:01
标题: 汇编版 子文本替换
本帖最后由 z3201 于 2022-11-15 19:10 编辑

子文本替换 用的挺多的,但是没有发现汇编的版本,所以用自己蹩脚的汇编功底写了一个...南无阿弥陀佛(不要出bug)!
顺便带上一些以前写的或者之前收集的,感谢开源的大神..



asm.e (19.33 KB, 下载次数: 47)







补充内容 (2022-11-16 23:11):
请大家下载 楼下 优化版

补充内容 (2022-11-21 20:10):
改进版:
https://125.confly.eu.org/forum.php?mod ... 14754777&extra=
作者: zlw8504    时间: 2022-11-15 19:55
感谢楼楼分享!!!
作者: 福仔    时间: 2022-11-15 20:03
看了下写法, 这种写法被替换的文本越大, 效率越慢吧
因为你先循环了一轮查找文本来确定结果内存尺寸
小文本的话, 这个循环基本可以忽略, 大文本的话, 这个循环就影响有点大了
作者: z3201    时间: 2022-11-15 20:30
福仔 发表于 2022-11-15 20:03
看了下写法, 这种写法被替换的文本越大, 效率越慢吧
因为你先循环了一轮查找文本来确定结果内存尺寸
小文本 ...

分配内存的问题我也考虑了很久,没什么好的方案,也考虑了你这个方案,所以发出来看看大神有什么更优的办法,,开始分配的内存多少合适,完全没有一个常用的范围,所以不知道设置多少合适,,就算在次申请,也不能确保后面就够了,当时也没考虑太大的文件,,大文件估计不够在临时申请会好一些..感谢帮忙分析和建议~
作者: 福仔    时间: 2022-11-15 21:05
z3201 发表于 2022-11-15 20:30
分配内存的问题我也考虑了很久,没什么好的方案,也考虑了你这个方案,所以发出来看看大神有什么更优的办法, ...

开始分配的内存你假设有一半的文本需要替换, 你就分配原字符串长度 * 替换文本的差值
如果替换的文本比被替换的文本短, 那就申请一个原文本长度的内存
否则就 原长度 * (替换内容长度 - 被替换内容长度)
欲分配这么多, 够用就只分配一次, 不够用就分配更大的
或者是判断原文本长度, 如果是100个字节以内的, 那你可以预分配3-5倍的内存

反正就是在写入内存的时候判断是否还够写入, 不够写就重新分配
作者: z3201    时间: 2022-11-15 21:30
福仔 发表于 2022-11-15 21:05
开始分配的内存你假设有一半的文本需要替换, 你就分配原字符串长度 * 替换文本的差值
如果替换的文本比被 ...

谢谢给的方案,有时间在写一个.
作者: 15158930038    时间: 2022-11-15 21:41
这个厉害
作者: 蒙顺童    时间: 2022-11-15 21:55
66666666666666666666666666
作者: 283688410    时间: 2022-11-15 21:58
谢谢楼主分享
作者: z3201    时间: 2022-11-15 23:18
本帖最后由 z3201 于 2022-11-16 23:10 编辑

优化了一下

asm.e (44.05 KB, 下载次数: 3)

作者: 一尘不染    时间: 2022-11-16 03:39
代码严谨,注释清晰,速度快,性能稳
作者: singlecolor    时间: 2022-11-16 06:34
来看看
作者: 网络注册络员    时间: 2022-11-16 08:06
下来试一下
作者: 李泽勇2    时间: 2022-11-16 08:15
我一般用不到大文件替换。感谢分享。
作者: 临安    时间: 2022-11-16 10:06
不知道稳定性如何 ~
作者: 杨明煜    时间: 2022-11-16 18:00
支持,谢谢...........
作者: 本森Bin    时间: 2022-11-16 21:02
支持,谢谢......
作者: z3201    时间: 2022-11-17 13:49
本帖最后由 z3201 于 2022-11-17 13:50 编辑

之前的多少有一些不合理或者极端情况下的bug,这次全部修正,原文本越大相比核心库优势就越大.注释很清晰,小文本主要耗时是内存申请上,大家可以根据自己的需求修改.


补充内容 (2022-11-18 14:20):
置入代码 ({ 139, 69, 252, 96, 139, 125, 8, 139, 117, 12, 139, 93, 16, 139, 63, 139, 54, 139, 27, 139, 69, 252, 137, 193, 3, 77, 240, 137, 77, 240, 133, 255, 116, 41, 133, 246, 116, 78, 49, 201, 49, 210, 138, 15, 128, 249, 0, 116, 26, 136, 8, 64, 71, 59, 69, 240, 116, 65, 58, 12, 22, 116, 4, 49, 210, 235, 231, 66, 57, 85, 248, 116, 13, 235, 223, 199, 0, 0, 0, 0, 0, 97, 201, 194, 20, 0, 43, 69, 248, 139, 77, 244, 133, 201, 116, 13, 138, 19, 136, 16, 64, 59, 69, 240, 116, 17, 67, 226, 243, 49, 210, 43, 93, 244, 235, 182, 97, 137, 248, 201, 194, 20, 0, 97, 49, 192, 201, 194, 20, 0 })

asm.e

22.32 KB, 下载次数: 20, 下载积分: 精币 -2 枚


作者: quary888    时间: 2022-11-21 13:37
谢谢楼主分享!!! 好人一生平安!!!
作者: 已注销571294    时间: 2022-12-1 18:14
提示: 作者被禁止或删除 内容自动屏蔽
作者: youxigw    时间: 2022-12-2 17:03
支持,谢谢......
作者: bysy    时间: 2022-12-6 19:13
楼主 循环闪退
作者: a1554688500    时间: 2022-12-6 19:27
感谢分享!!!!!!




欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4