开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1911|回复: 7
收起左侧

[已解决] 易语言通用型数据类型的可空标识如何通过汇编进行修改?

 关闭 [复制链接]
结帖率:67% (4/6)
发表于 2019-9-14 23:44:25 | 显示全部楼层 |阅读模式   湖北省武汉市
5精币
我在论坛找到了对基本数据类型的可空标识进行修改的实例:
  
子程序名返回值类型公开备 注
是否不为空 传入的参数必须有可空标志,否则可能会影响到其他参数。
参数名类 型参考可空数组备 注
变量1
状态逻辑型默认不为空。
置入代码 ({ 139, 68, 36, 8, 139, 88, 4, 131, 251, 1, 118, 2, 235, 7, 139, 92, 36, 12, 137, 88, 4 })
' ;_asm{
' mov eax,[esp+8]
' mov ebx,[esp+12]
' mov [eax+4],ebx
' }
返回 ()


但是似乎对自定义类型和复合类型无效啊?(文本型等)
有没有办法弄一个通杀呢?

最佳答案

查看完整内容

[e=1] .版本 2 .支持库 spec .子程序 _临时子程序 .局部变量 a1, 数据类型1 .局部变量 a2, 数据类型2 a1.字节集 = { 1, 2, 3, 4 } a1.文本型数组 = { “1”, “2”, “3”, “4” } a1.整数型 = 10086 a1.文本型 = “数据类型1的结构是这样,第一个成员是字节集,第二个成员是文本型数组,第三个成员是整数型,第四个成员是文本型” a2.整数型 = 121007124 a2.数据类型1 = a1 a2.文本型 = “数据类型2的结构是 第一个成员 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:100% (9/9)

签到天数: 19 天

发表于 2019-9-14 23:44:26 | 显示全部楼层   广东省揭阳市
1586606701 发表于 2019-9-15 12:59
似乎不能修改 父方法的 参数的 标识。。。。。。
求大佬给个汇编研究研究
  
子程序名返回值类型公开备 注
_临时子程序  
变量名类 型静态数组备 注
a1数据类型1 
a2数据类型2 
a1.字节集 = { 1, 2, 3, 4 }
a1.文本型数组 = { “1”, “2”, “3”, “4” }
a1.整数型 = 10086
a1.文本型 = “数据类型1的结构是这样,第一个成员是字节集,第二个成员是文本型数组,第三个成员是整数型,第四个成员是文本型”
a2.整数型 = 121007124
a2.数据类型1 = a1
a2.文本型 = “数据类型2的结构是 第一个成员是整数型,第二个成员是数据类型1,第三个成员是整数型”
子程序1 (a1, 1)
子程序1 (a2, 2)
子程序名返回值类型公开备 注
子程序1  
参数名类 型参考可空数组备 注
参数1通用型
参数2整数型
变量名类 型静态数组备 注
b逻辑型 
p整数型 
b =   ' 初始值为真,汇编代码里判断参数1不为空时没操作这个变量
p = 0
如果真 (参数2 = 1)  ' 处理类型1
' 只演示从数据类型1里获取第四个成员的数据,其他成员获取看我历史主题,数据类型剖析和数组剖析
' 第四个成员偏移就是 + 12
' 步骤,
' 1.先取到参数a是否可空,
' 2.在把a的第四个成员指针存到第二个变量
' 第一步,先取参数1是否为空
置入代码 ({ 139, 69, 12, 11, 192, 117, 5, 106, 0, 143, 69, 252 })
如果真 (b = )
调试输出 (“参数1为空”)
返回 ()

' 第二步,取参数1第四个成员的长度,如果需要修改原数据,可以直接交换指针,这里演示取
置入代码 ({ 139, 69, 8, 139, 0, 139, 64, 12, 80, 143, 69, 248 })
调试输出 (“分开写法”, p, 指针到文本 (p))
' 这个是综合写法,先判断参数1是否为空,不为空就写入第二个变量,没操作第一个变量
置入代码 ({ 139, 69, 12, 11, 192, 117, 2, 235, 12, 139, 69, 8, 139, 0, 139, 64, 12, 80, 143, 69, 248 })
调试输出 (“综合写法”, p, 指针到文本 (p))
返回 ()

' 处理类型2,这里演示取第二个成员结构中的第四个成员
置入代码 ({ 139, 69, 12, 11, 192, 117, 2, 235, 15, 139, 69, 8, 139, 0, 139, 64, 4, 139, 64, 12, 80, 143, 69, 248 })
调试输出 (“数据类型2取第二个成员里的第四个成员”, p, 指针到文本 (p))


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


就这样了,别问我汇编代码,自己反.....

补充内容 (2019-9-15 13:13):
哦,这里的参考不显示,记得,有通用型的,参考最好打上,不然你不确定传进来的到低是4字节的变量还是8字节的变量,打上参考都是4个字节

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:100% (9/9)

签到天数: 19 天

发表于 2019-9-15 01:33:34 | 显示全部楼层   广东省揭阳市
有可空标志的算是两个参数,一个是标记参数是否为空,一个是参数数据,
具体哪个在前哪个在后忘了
所以
参数1 测试1 整数型 有可空标志
参数2 测试2 整数型

其实这样的参数就是  参数1 可空标志, 参数2 测试1的数据,参数3测试2的数据,可空标志在前还是数据在前忘了
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2019-9-15 07:24:56 | 显示全部楼层   湖北省武汉市
福仔 发表于 2019-9-15 01:33
有可空标志的算是两个参数,一个是标记参数是否为空,一个是参数数据,
具体哪个在前哪个在后忘了
所以

能出一个 汇编的 方法吗?之前别人发的只能用 基础类型 很多东西用不了啊。
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2019-9-15 07:30:04 | 显示全部楼层   湖北省武汉市
福仔 发表于 2019-9-15 01:33
有可空标志的算是两个参数,一个是标记参数是否为空,一个是参数数据,
具体哪个在前哪个在后忘了
所以

在后
参数1 + 4 就是可空标志
但是这样是 对 基本类型来说是这样,复合类型似乎没那么简单
我测试过文本型,就不是这样,自定义类型也不是

点评

基础类型 通用型,复合型这些都一样,你只要知道 在易语言里,除了数值类型,其他参数传递全都是已指针的方式传递 所以你想要操作复合型数据类型,那你就得知道这个复合型在易语言里是以什么样的结构存放 然后操作这个   广东省揭阳市  详情 回复 发表于 2019-9-15 12:09
回复

使用道具 举报

结帖率:100% (9/9)

签到天数: 19 天

发表于 2019-9-15 12:09:22 | 显示全部楼层   广东省揭阳市
1586606701 发表于 2019-9-15 07:30
在后
参数1 + 4 就是可空标志
但是这样是 对 基本类型来说是这样,复合类型似乎没那么简单

基础类型 通用型,复合型这些都一样,你只要知道 在易语言里,除了数值类型,其他参数传递全都是已指针的方式传递
所以你想要操作复合型数据类型,那你就得知道这个复合型在易语言里是以什么样的结构存放
然后操作这个指针就可以了
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2019-9-15 12:49:33 | 显示全部楼层   湖北省武汉市
福仔 发表于 2019-9-15 12:09
基础类型 通用型,复合型这些都一样,你只要知道 在易语言里,除了数值类型,其他参数传递全都是已指针的方式 ...

但是 我通过取变量地址() 获取到 变量的地址之后
在子程序中 使用 [ebp+8]  可以获取到 变量地址 可是 保存标记的 [ebp+8] + 4 却丢失了
我访问 [ebp+12] 获取到的是第二个参数 不再是 第一个参数的指针了
回复

使用道具 举报

结帖率:67% (4/6)
 楼主| 发表于 2019-9-15 12:59:46 | 显示全部楼层   湖北省武汉市
福仔 发表于 2019-9-15 12:09
基础类型 通用型,复合型这些都一样,你只要知道 在易语言里,除了数值类型,其他参数传递全都是已指针的方式 ...

似乎不能修改 父方法的 参数的 标识。。。。。。
求大佬给个汇编研究研究

点评

[e=1] .版本 2 .支持库 spec .子程序 _临时子程序 .局部变量 a1, 数据类型1 .局部变量 a2, 数据类型2 a1.字节集 = { 1, 2, 3, 4 } a1.文本型数组 = { “1”, “2”, “3”, “4” } a1.整数型 = 1008   广东省揭阳市  详情 回复 发表于 2019-9-15 13:12
回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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