开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

123
返回列表 发新帖
楼主: 笨来无一悟
收起左侧

[易语言纯源码] 【蠢新学汇编】是否在时间段之内

[复制链接]
结帖率:100% (2/2)
 楼主| 发表于 2024-7-19 20:51:27 | 显示全部楼层   贵州省毕节市
最终优化版本及其示例
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
子程序名返回值类型公开备 注
__启动窗口_创建完毕 年月日 时分秒 自己随意设定 判断当前时间 是否在指定时间段以内
调试输出 (时段 (23, 6, 8), “早8点是否在晚23点到早6点之间”)
调试输出 (时段 (23, 6, 5), “早5点是否在晚23点到早6点之间”)
调试输出 (时段 (7, 21, 9), “早9点是否在早7点到晚21点之间”)
调试输出 (时段 (7, 21, 6), “早6点是否在早7点到晚21点之间”)
调试输出 (时段 (8 × 60 + 35, 21 × 60 + 40, 12 × 60 + 30), “中午12点半是否在早上8点35到晚上21点40之间”)
调试输出 (时段 (8 × 60 + 35, 21 × 60 + 40, 22 × 60 + 35), “晚上22点35是否在早上8点35到晚上21点40之间”)
子程序名返回值类型公开备 注
时段逻辑型 
参数名类 型参考可空数组备 注
时始整数型时×60×60 + 分×60+秒
时末整数型时×60×60 + 分×60+秒
现在整数型时×60×60 + 分×60+秒
置入代码 ({ 82, 139, 69, 16, 59, 69, 12, 15, 153, 198, 59, 69, 8, 15, 153, 194, 48, 242, 139, 69, 8, 59, 69, 12, 15, 153, 198, 48, 242, 15, 182, 194, 90, 201, 194, 12, 0 })
返回 ()
' PUSH EDX
' MOV EAX, DWORD [EBP+0X10]
' CMP EAX, DWORD [EBP+0X0C]
' SETNS DH
' CMP EAX, DWORD [EBP+0X08]
' SETNS DL
' XOR DL,DH
' MOV EAX, DWORD [EBP+0X08]
' CMP EAX, DWORD [EBP+0X0C]
' SETNS DH
' XOR DL,DH
' MOVZX EAX, DL
' POP EDX
' LEAVE
' RETN 0X000C



i支持库列表   支持库注释   
spec特殊功能支持库

点评

不保护EDX寄存器就可以再快一丁点 昨晚研究双精度数组求和搞怕了担心引发未知事故 循环123456789次只比自带的快200毫秒捣鼓半天提升很小算了将就着用   贵州省毕节市  发表于 2024-7-19 22:58
我喜欢又短又快的,虽然比我短,但是还不够快,希望能更快   广东省佛山市  发表于 2024-7-19 22:41
相比旧版提速25-30%   贵州省毕节市  发表于 2024-7-19 20:57
回复 支持 反对

使用道具 举报

结帖率:100% (2/2)

签到天数: 12 天

 楼主| 发表于 2024-7-19 20:29:40 | 显示全部楼层   贵州省毕节市
7ian 发表于 2024-7-19 16:34
加多个条件就这样:{ 49, 192, 139, 77, 8, 59, 77, 12, 126, 18, 139, 77, 16, 59, 77, 8, 127, 26, 139,  ...

试验成功
  
子程序名返回值类型公开备 注
时段逻辑型 
参数名类 型参考可空数组备 注
时始整数型时×60×60 + 分×60+秒
时末整数型时×60×60 + 分×60+秒
现在整数型时×60×60 + 分×60+秒
置入代码 ({ 82, 139, 69, 16, 59, 69, 12, 15, 153, 198, 59, 69, 8, 15, 153, 194, 48, 242, 139, 69, 8, 59, 69, 12, 15, 153, 198, 48, 242, 15, 182, 194, 90, 201, 194, 12, 0 })
返回 ()
' PUSH EDX
' MOV EAX, DWORD [EBP+0X10]
' CMP EAX, DWORD [EBP+0X0C]
' SETNS DH
' CMP EAX, DWORD [EBP+0X08]
' SETNS DL
' XOR DL,DH
' MOV EAX, DWORD [EBP+0X08]
' CMP EAX, DWORD [EBP+0X0C]
' SETNS DH
' XOR DL,DH
' MOVZX EAX, DL
' POP EDX
' LEAVE
' RETN 0X000C


回复 支持 反对

使用道具 举报

签到天数: 29 天

发表于 2024-7-19 17:46:53 | 显示全部楼层   广东省广州市
开源精神必须支持~
回复 支持 反对

使用道具 举报

结帖率:100% (5/5)

签到天数: 2 天

发表于 2024-7-19 16:34:08 | 显示全部楼层   广东省佛山市
本帖最后由 7ian 于 2024-7-19 16:47 编辑

加多个条件就这样:{ 49, 192, 139, 77, 8, 59, 77, 12, 126, 18, 139, 77, 16, 59, 77, 8, 127, 26, 139, 77, 16, 59, 77, 12, 124, 18, 235, 17, 139, 77, 16, 59, 77, 8, 126, 9, 139, 77, 16, 59, 77, 12, 125, 1, 64, 201, 194, 12, 0 }
xor eax, eax//给0
mov ecx, dword [ebp+0x08]
cmp ecx, dword [ebp+0x0C]
jle Label1//下面是 始>末
mov ecx, dword [ebp+0x10]
cmp ecx, dword [ebp+0x08]
jnle Label2//变1
mov ecx, dword [ebp+0x10]
cmp ecx, dword [ebp+0x0C]
jl Label2//变1
jmp Label3//结束
Label1://始<=末
mov ecx, dword [ebp+0x10]
cmp ecx, dword [ebp+0x08]
jle Label3//结束
mov ecx, dword [ebp+0x10]
cmp ecx, dword [ebp+0x0C]
jnl Label3//结束
Label2://变1
inc eax
Label3://结束
leave
retn 0x000C


点评

保护寄存器的值再各种跳转 比易语言自带的还慢 用位运算和你的这个相比只是代码更少了 速度几乎一样...惨   贵州省毕节市  发表于 2024-7-19 21:30
套两层位异或 满足的时候一定返回真 等下测试测试不满足的时候 有没有可能也返回真 如果没有 那就成了 没成那就算了   贵州省毕节市  发表于 2024-7-19 17:13
.版本 2 .支持库 spec 调试输出 (位异或 (0, 位异或 (1, 0))) 调试输出 (位异或 (1, 位异或 (1, 1))) 调试输出 (位异或 (1, 位异或 (0, 0))) 好像成功了 等下试试   贵州省毕节市  发表于 2024-7-19 17:11
位运算比较快,指令也少   广东省佛山市  发表于 2024-7-19 16:42
现在还在学习比较之后的各种标志位 感觉是不是可以用位运算进行判断 如果能成功 这样就可以免去分支跳转了   贵州省毕节市  发表于 2024-7-19 16:38
功德无量   贵州省毕节市  发表于 2024-7-19 16:36
回复 支持 反对

使用道具 举报

结帖率:100% (18/18)

签到天数: 28 天

发表于 2024-7-19 15:35:35 | 显示全部楼层   福建省泉州市
功德无量

点评

7楼 优化完毕了 是否在某个时间段之内 这个功能应该还是有用武之地的...   贵州省毕节市  发表于 2024-7-19 20:58
有BUG 已修复 不过代码好臃肿 等哪天水平提高了再看看咋继续优化...   贵州省毕节市  发表于 2024-7-19 16:08
回复 支持 1 反对 0

使用道具 举报

结帖率:100% (5/5)

签到天数: 2 天

发表于 2024-7-19 14:49:23 | 显示全部楼层   广东省佛山市
这样呢:{ 49, 192, 139, 77, 16, 59, 77, 8, 127, 10, 139, 77, 16, 59, 77, 12, 124, 2, 235, 1, 64, 201, 194, 12, 0 }

点评

时段 (2, 6, 22) 这样会返回真实际22并不介于2和6之间 开始时间小于结束时间的时候有BUG 开始大于结束的时候是正常的   贵州省毕节市  发表于 2024-7-19 16:06
没看懂什么错,开始结束都大于也没毛病   广东省佛山市  发表于 2024-7-19 15:26
{ 时始>时末 } : 现在 > 时始 或 现在 < 时末 { 时始<时末 } : 现在 > 时始 且 现在 < 时末~~~一个是或 一个是且   贵州省毕节市  发表于 2024-7-19 15:15
非常感谢 这一测试 发现其中有个BUG 还得修修 你的 我的 写法都有这个问题 开始时间 结束时间 都大于现在 就会出错   贵州省毕节市  发表于 2024-7-19 15:03
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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