开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 984|回复: 76
收起左侧

[易语言纯源码] 【蠢新学汇编】整数数组 取最大最小

[复制链接]
结帖率:100% (3/3)
发表于 2025-2-23 03:49:47 | 显示全部楼层 |阅读模式   贵州省毕节市
分享源码
界面截图: -
是否带模块: 纯源码
备注说明: -
本帖最后由 笨来无一悟 于 2025-2-23 11:50 编辑
  
子程序名返回值类型公开备 注
最大整数整数型 
参数名类 型参考可空数组备 注
整数数组整数型
置入代码 ({ 139, 117, 8, 139, 54, 131, 198, 4, 139, 14, 49, 192, 133, 201, 116, 11, 139, 20, 142, 57, 194, 126, 2, 137, 208, 226, 245, 201, 194, 4, 0 })
返回 (0)
' MOV ESI,[EBP+8]
' MOV ESI,[ESI]
' ADD ESI,4
' MOV ECX,[ESI]
' XOR EAX ,EAX
' TEST ECX,ECX
' JE O
' XH:
' MOV EDX,[ESI+ECX*4]
' CMP EDX,EAX
' JLE T
' MOV EAX, EDX
' T:
' LOOP XH
' O:
' LEAVE
' RET 4
子程序名返回值类型公开备 注
最小整数整数型 
参数名类 型参考可空数组备 注
整数数组整数型
置入代码 ({ 139, 117, 8, 139, 54, 131, 198, 4, 139, 14, 49, 192, 133, 201, 116, 14, 139, 70, 4, 139, 20, 142, 57, 194, 125, 2, 137, 208, 226, 245, 201, 194, 4, 0 })
返回 (0)
' MOV ESI,[EBP+8]
' MOV ESI,[ESI]
' ADD ESI,4
' MOV ECX,[ESI]
' XOR EAX ,EAX
' TEST ECX,ECX
' JE O
' MOV EAX,[ESI+4]
' XH:
' MOV EDX,[ESI+ECX*4]
' CMP EDX,EAX
' JGE T
' MOV EAX, EDX
' T:
' LOOP XH
' O:
' LEAVE
' RET 4

来自群组: 热心网友

评分

参与人数 4好评 +2 精币 +6 收起 理由
xshu8 + 1 + 2 开源精神必须支持~
yuan71058 + 1 + 2 忘记评分了 哈哈
atomd510 + 1 YYDS~!
多多帅吧 + 1 互相讨论,共同进步

查看全部评分


签到天数: 2 天

发表于 2025-3-1 19:47:58 | 显示全部楼层   福建省泉州市
66666666666666666666666666
回复 支持 1 反对 0

使用道具 举报

签到天数: 4 天

发表于 2025-3-1 17:52:04 | 显示全部楼层   河北省张家口市
笨来无一悟 发表于 2025-3-1 16:48
敲了一个示例 你要修改更快的类模块 可以照搬这种思路 预先申请富余的空间 避免频繁重定义 快速文本对象 ...

跪谢恩师,太清晰明了了,哈哈哈哈吼吼吼好可爱

点评

我觉得我写的每一行代码都是哈哈哈 即使它们无法运行也很呜呜呜 (#^.^#)   贵州省毕节市  发表于 2025-3-1 18:06
回复 支持 反对

使用道具 举报

结帖率:100% (3/3)

签到天数: 4 天

 楼主| 发表于 2025-3-1 16:48:56 | 显示全部楼层   贵州省毕节市
萧楚楠 发表于 2025-3-1 15:47
恩师 我看注释,说加入成员()是重定义了数组,那他应该就是找了一块新内存,然后写进去再改指针应该是, ...

敲了一个示例 你要修改更快的类模块 可以照搬这种思路 预先申请富余的空间 避免频繁重定义 快速文本对象也是这种优化思路
  
窗口程序集名保 留  保 留备 注
窗口程序集_启动窗口   
变量名类 型数组备 注
吼吼吼整数型10 

子程序名返回值类型公开备 注
__启动窗口_创建完毕  
变量名类 型静态数组备 注
计次整数型 
地址整数型 
计次循环首 (10, 计次)
吼吼吼 [计次] = 计次
计次循环尾 ()
调试输出 (吼吼吼)
地址 = 申请内存 (4 × 100 + 8, )
写到内存 (1, 地址, 4)
写到内存 (100, 地址 + 4, 4)
计次循环首 (100, 计次)
写到内存 (计次, 地址 + 4 + 计次 × 4, 4)  ' 这里为了方便直观的理解就不用汇编了 汇编会快很多很多 这样写是为了你看懂
计次循环尾 ()
哈哈哈 (吼吼吼, 地址)
调试输出 (吼吼吼)
子程序名返回值类型公开备 注
哈哈哈 把原来的数组的指针转移到新的地址 修改 地址+4这个地方的数值就可以达到增减成员的效果 加入成员的时候只要没有越界 都不需要重定义数组 会比易语言原生的快
参数名类 型参考可空数组备 注
嘿嘿嘿整数型
啦啦啦整数型
置入代码 ({ 139, 69, 8, 139, 85, 12, 137, 16 })  ' 如果检查到越界了可以一次性加一百个成员的内存空间 这样添加100次才重定义一次数组 不像易语言原生的 每加一个都重定义一次
' mov eax,[ebp+8]
' mov edx,[ebp+12]
' mov dword [eax],edx



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

点评

1 100的意思是 1维数组100个成员 循环里面是每个成员里面保存的数值   贵州省毕节市  发表于 2025-3-1 16:53
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2025-3-1 15:47:01 | 显示全部楼层   河北省张家口市
本帖最后由 萧楚楠 于 2025-3-1 15:48 编辑

恩师 我看注释,说加入成员()是重定义了数组,那他应该就是找了一块新内存,然后写进去再改指针应该是,谢谢恩师解惑

点评

第43楼 敲了一个例子   贵州省毕节市  发表于 2025-3-1 16:49
你要速度比较快的加入成员那就预先开辟多余的空间 写满了再开辟一段 这样就可以比较快速的加入 你加入的时候 在成员数的位置修改数值就可以了   贵州省毕节市  发表于 2025-3-1 16:23
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2025-2-28 23:57:39 | 显示全部楼层   河北省张家口市
恩师,我又对 整数数组 有点问题了,就是如果用汇编对 整数数组 加入成员,会不会导致数据覆盖这种问题?毕竟我不会声明数组长度
  
子程序名返回值类型公开备 注
_加入成员  
变量名类 型静态数组备 注
数组整数型0
' 加入成员 (数组, )  正常不是用加入成员来加入数据嘛
' 如果用汇编写的话,我是从数据地址开始一直 +4 写成员
' 这样确实可以用,但是如果我写的数据特别多,会不会把别的数据覆盖到啊?

点评

如果数据的大小是可以预估的 那直接申请一块空间自己独占写内存按数组的格式去写 到时候把数组的指针指向这个地址应该也可以用数组读出来   贵州省毕节市  发表于 2025-3-1 07:55
会覆盖 所以易语言的加入成员很慢 应该是重定义数组了   贵州省毕节市  发表于 2025-3-1 07:53
回复 支持 反对

使用道具 举报

签到天数: 3 天

发表于 2025-2-27 09:38:47 | 显示全部楼层   浙江省宁波市
感谢分享,支持开源!!!
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2025-2-27 04:14:41 | 显示全部楼层   河北省张家口市
我大概明白了恩师,是不是如果是这样的话就得保护寄存器
  
子程序名返回值类型公开备 注
子程序1  
' 用到了edi
子程序2 ()
' 继续操作edi
子程序名返回值类型公开备 注
子程序2  
' 如果这里也用到了edi就需要保护edi了


点评

对 就是这个意思   贵州省毕节市  发表于 2025-2-27 08:10
回复 支持 反对

使用道具 举报

签到天数: 4 天

发表于 2025-2-27 03:11:32 | 显示全部楼层   河北省张家口市
恩师,我发现了个问题,就是很多人的代码都不去保护寄存器,但是他说寄存器不需要保护,因为不会有函数依赖寄存器原始值
我感觉,好像,有点道理……

点评

易语言的字节集和文本 经常会使用到ESI EDI 如果上层函数是处理文本的 破坏了有一定概率出事 只能说大部分时间不保护 出事的概率也不大   贵州省毕节市  发表于 2025-2-27 03:42
不一定的 比如调用api的那个排序 就必须保护一下 否则闪退 需要用 调用子程序() 取返回值的 必须保护一下EBX如果你有使用他的话   贵州省毕节市  发表于 2025-2-27 03:39
回复 支持 反对

使用道具 举报

结帖率:95% (395/414)

签到天数: 4 天

发表于 2025-2-26 00:51:30 | 显示全部楼层   内蒙古自治区乌海市
谢谢分享
回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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