开启辅助访问

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

建议,在精易模块8.2.5基础上加:文本_取长度_汇编 ()

查看数: 7458 | 评论数: 14 | 收藏 1
关灯 | 提示:支持键盘翻页 & lt;-左 右 ->
    组图打开中,请稍候......
gua
发布时间: 2020-6-12 11:15

正文摘要:

为什么要用汇编的呢?大家都肯定知道,汇编快、好,如下图: 都是一模一样的文本,但是显然汇编得快,源码如下:   子程序名返回值类型公开备 注文本_取长度_汇编整数型 文本_取长度 的汇编版本,比 ...

回复

bf001   广西壮族自治区河池市 发表于 2023-3-17 15:32:51
精易模块更新的好快
jr21066   陕西省渭南市 发表于 2020-10-19 19:25:03
这个有源码了.就是源码也是抄的.维护不了.但速度真的快

  
子程序名返回值类型公开备 注
取文本长度_SSE2_汇编整数型 速度最快
参数名类 型参考可空数组备 注
参_文本通用型文本变量或文本指针
置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 116, 59, 80, 137, 193, 102, 15, 239, 192, 131, 225, 15, 131, 224, 240, 102, 15, 111, 8, 102, 15, 116, 200, 102, 15, 215, 209, 211, 234, 211, 226, 15, 188, 210, 117, 20, 131, 192, 16, 102, 15, 111, 8, 102, 15, 116, 200, 102, 15, 215, 209, 15, 188, 210, 116, 236, 89, 41, 200, 1, 208, 201, 194, 4, 0 })
' mov eax,dword ptr ss:[ebp+0x8]
' mov eax,dword ptr ds:[eax]
' test eax,eax
' je end_
' push eax
' mov ecx,eax
' pxor xmm0,xmm0
' and ecx,0xF
' and eax,0xFFFFFFF0
' movdqa xmm1,xmmword ptr ds:[eax]
' pcmpeqb xmm1,xmm0
' pmovmskb edx,xmm1
' shr edx,cl
' shl edx,cl
' bsf edx,edx
' jne Label_a
' Label_b:
' add eax,0x10
' movdqa xmm1,xmmword ptr ds:[eax]
' pcmpeqb xmm1,xmm0
' pmovmskb edx,xmm1
' bsf edx,edx
' je Label_b
' Label_a:
' pop ecx
' sub eax,ecx
' add eax,edx
' end_:
' leave
' ret 0x4
返回 (0)

jr21066   陕西省渭南市 发表于 2020-10-19 19:23:04
这个有源码了.就是源码也是抄的.维护不了.但速度真的快

  
子程序名返回值类型公开备 注
取文本长度_SSE2_汇编整数型 速度最快
参数名类 型参考可空数组备 注
参_文本通用型文本变量或文本指针
置入代码 ({ 139, 69, 8, 139, 0, 133, 192, 116, 59, 80, 137, 193, 102, 15, 239, 192, 131, 225, 15, 131, 224, 240, 102, 15, 111, 8, 102, 15, 116, 200, 102, 15, 215, 209, 211, 234, 211, 226, 15, 188, 210, 117, 20, 131, 192, 16, 102, 15, 111, 8, 102, 15, 116, 200, 102, 15, 215, 209, 15, 188, 210, 116, 236, 89, 41, 200, 1, 208, 201, 194, 4, 0 })
' mov eax,dword ptr ss:[ebp+0x8]
' mov eax,dword ptr ds:[eax]
' test eax,eax
' je end_
' push eax
' mov ecx,eax
' pxor xmm0,xmm0
' and ecx,0xF
' and eax,0xFFFFFFF0
' movdqa xmm1,xmmword ptr ds:[eax]
' pcmpeqb xmm1,xmm0
' pmovmskb edx,xmm1
' shr edx,cl
' shl edx,cl
' bsf edx,edx
' jne Label_a
' Label_b:
' add eax,0x10
' movdqa xmm1,xmmword ptr ds:[eax]
' pcmpeqb xmm1,xmm0
' pmovmskb edx,xmm1
' bsf edx,edx
' je Label_b
' Label_a:
' pop ecx
' sub eax,ecx
' add eax,edx
' end_:
' leave
' ret 0x4
返回 (0)

点评

这个汇编是真的吊打其他同命令汇编   广东省潮州市  发表于 2021-1-16 22:24
gzk19860111   浙江省杭州市 发表于 2020-7-10 15:14:17
支持一下 支持易语言
let4757539   山东省济宁市 发表于 2020-6-28 15:06:33
路过,飘过,走过,看过
gua   湖北省武汉市 发表于 2020-6-24 19:26:22
项目部006 发表于 2020-6-18 10:09
这是机器码, 不是汇编, 虽然可以利用工具反编译出来转成汇编, 但这个意思好像就是你给了个模块, 没有给模 ...

汇编代码:
  1. push ebx
  2. mov eax,[ebp+0x8]
  3. mov eax,[eax]
  4. lea edx,[eax+0x3]
  5. mov ebx,[eax]
  6. add eax,byte +0x4
  7. lea ecx,[ebx-0x1010101]
  8. not ebx
  9. and ecx,ebx
  10. and ecx,0x80808080
  11. jz 0x9
  12. test ecx,0x8080
  13. jnz 0x2e
  14. shr ecx,byte 0x10
  15. add eax,byte +0x2
  16. shl cl,1
  17. sbb eax,edx
  18. pop ebx
  19. leave
  20. ret 0x4
复制代码
police0909   广西壮族自治区崇左市 发表于 2020-6-18 18:09:19
sinewtec 发表于 2020-6-12 11:18
只想知道离开了模块 你还会不会编程

没了模块,没了核心库,我压根连易语言都不装了
项目部006   广东省揭阳市 发表于 2020-6-18 10:09:04
gua 发表于 2020-6-17 09:53
代码不已经说了?
[e=1].版本 2

这是机器码, 不是汇编, 虽然可以利用工具反编译出来转成汇编, 但这个意思好像就是你给了个模块, 没有给模块源码, 然后告诉我说有工具可以反编译, 你反编译一下模块然后加入到精易模块里, 差不多是这么个意思
gua   湖北省武汉市 发表于 2020-6-17 09:54:06
项目部006 发表于 2020-6-17 08:14
没有汇编代码不会加入, 如果用到置入代码的, 请提供汇编代码, 不然不好维护修改

.版本 2

.子程序 文本_取长度_汇编, 整数型, , 文本_取长度 的汇编版本,比文本_取长度快,对于较长的文本很有优势
.参数 文本, 文本型
.局部变量 文本指针, 整数型

置入代码 ({ 83, 139, 69, 8, 139, 0, 141, 80, 3, 139, 24, 131, 192, 4, 141, 139, 255, 254, 254, 254, 247, 211, 35, 203, 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, 91, 201, 194, 4, 0 })

返回 (0)

点评

gua
不好意思,刚刚因为看见500,误以为没提交   湖北省武汉市  发表于 2020-6-17 09:54
发布主题 收藏帖子 返回列表

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

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