精易论坛

标题: 凌哥 - 易语言骚操作之动态数.据类型_完全脱离易语言变量的束缚 [打印本页]

作者: 凌哥    时间: 2020-2-20 16:37
标题: 凌哥 - 易语言骚操作之动态数.据类型_完全脱离易语言变量的束缚
本帖最后由 凌哥 于 2020-2-20 16:39 编辑

相关帖子:


无可挑剔的多线程传任意数量参数例子,个人认为算是最完美、便捷的一种方案了

多线程高效率完美传递通用型数.据的一个例子,大家似乎对这个比较感兴趣?

取CPU基准速度(Ghz) - 敲黑板:易语言自定义数据类型数组内存格式及调用API时的转换



现在,又多了一个骚操作:将某个数.据类型/类 完全脱离易语言变量的束缚,把它变成孤儿指针

我从落叶的通用型哈希表那边学来的:哈希表类_汇编版(HashMap_ASM) 支持自定义数据值

核心思路如下图:



1.png



当我们在代码中引用 局_自定义数据 的时候,易语言才会初始化这个变量,如果没有引用,这个变量在编译后其实是不存在的

这时候,我们在子程序开头执行这么一段汇编代码:


mov eax,[ebp-0x4]

leave

ret 0x4


这段汇编代码的意思是,将第一个变量的值写入eax(返回值) 然后 ret 4 让易语言的这个子程序直接返回

这时候,因为我们用了汇编代码让子程序直接返回的,没有经过易语言的控制,所以这个变量1的地址不会被释放

到此,我们就成功将这个变量的数据完全独立出来了

接下来就是如何释放这个变量的数据呢?

原理看下图:



1.png



为什么这个子程序需要声明一个局部变量呢?而且还是静态属性(全局变量)

因为我们要让易语言IDE的语法检查通过,子程序返回值是 数据类型1 我们写的 返回() 也要是数据类型1

这个变量唯一的用途就是让我们通过语法检查仅此而已

接着我们再看汇编代码:


mov eax,[ebp+0xC]

leave

ret 0x8


这段汇编代码的意思是,将返回值的数据设置为参数1,然后依旧是强制返回,不通过易语言

子程序执行后,如果没有用变量来接收返回值的话,他就会被调用处释放



接下来看看如何使用:


1.png



我们可以直接申请出一段内存地址,写入自定义数据类型/类

然后将它传递给线程,并且不需要考虑局部变量释放的问题,因为 局_指针 里面存放的就是独立的变量数据

接着在线程里面,取回这个数据就可以完美读写了



怎样使用其它数据类型



将 动态数据类型(类) 中的 数据类型1 改成你需要操作的数据类型即可(共6处)



读写性能测试


1.png


1.png






作者: xo37    时间: 2020-2-20 16:48
看上去很厉害的样子,谢谢分享
作者: 遗失的眼泪    时间: 2020-2-20 16:52
这界面好好看啊,能否告知叫什么名字
作者: Elite    时间: 2020-2-20 16:54
支持一波再走
作者: 神盾科学    时间: 2020-2-20 16:54
遗失的眼泪 发表于 2020-2-20 16:52
这界面好好看啊,能否告知叫什么名字

ETStudio v1.0.4 - 2020/01/04 “易语言版VS, 距离大(zhuang)神(bi)又进了一步”
https://125.confly.eu.org/forum.php?mod=viewthread&tid=14454843
(出处: 精易论坛)

作者: 凌哥    时间: 2020-2-20 16:55
遗失的眼泪 发表于 2020-2-20 16:52
这界面好好看啊,能否告知叫什么名字

论坛搜索ets
作者: 划落的天空    时间: 2020-2-20 17:03
是下实用性

作者: xue1987510    时间: 2020-2-20 17:08

作者: 猪滴寳貝哝    时间: 2020-2-20 17:10
嗯 下来看一下实用性和稳定性

作者: Shanks    时间: 2020-2-20 17:13
看看什么东西!

作者: ggp    时间: 2020-2-20 17:14
前排支持。

作者: kike    时间: 2020-2-20 17:16
神操作呀,支持一个。
作者: longsui48    时间: 2020-2-20 17:17
什么时候能把通用型直接整出来就好了
作者: zspmhzx    时间: 2020-2-20 17:21
正好需要 感谢
作者: 我翔飞    时间: 2020-2-20 17:22
这是什么啊
作者: 潇洒&男孩    时间: 2020-2-20 17:24
过来打一下酱油!!!!
作者: static007    时间: 2020-2-20 17:24


作者: 不苦小和尚    时间: 2020-2-20 17:29
直接做成模块吧,看的头晕
作者: 顶级娱乐·    时间: 2020-2-20 17:43
我就想知道你的背景是怎么弄得 和助手不冲突吗

作者: Fate    时间: 2020-2-20 17:45
感谢分享
作者: sinewtec    时间: 2020-2-20 17:55
这样和申请内存块 写入xx 读取xx 销毁内存块 有啥不同?好处在哪?
作者: hrb011011    时间: 2020-2-20 17:56
太骚了, 喜欢!!

作者: jiang910615    时间: 2020-2-20 17:57
› 技术专区 › 易语言源码›凌哥 - 易语言骚操作之动态数.据 ... › 参与/回复主题                 RE: 凌哥 - 易语言骚操作之动态数.据类型_完全脱离易语言变量的束缚 [[url=]修改[/url]]






作者: WinXsp    时间: 2020-2-20 18:05
.据类型_完全脱离易语言变量的束

作者: 315215    时间: 2020-2-20 18:09
这个是不是昨天群里心宇他们说的吗{:3_48:}{:3_48:}
作者: 凌哥    时间: 2020-2-20 18:14
315215 发表于 2020-2-20 18:09
这个是不是昨天群里心宇他们说的吗{:3_48:}{:3_48:}

就是我的      
作者: yxl2008    时间: 2020-2-20 18:45
谢谢楼主分享,下载学习!!!!
作者: z348870672    时间: 2020-2-20 19:16
6666666666666666666666666666666666

作者: zhang2442534709    时间: 2020-2-20 20:05
6666666666666666666666
作者: 列明    时间: 2020-2-20 20:17
吳濤辛辛苦苦加了那麽多限制,你一下子就給做了個捷徑!

作者: 用户名已更换    时间: 2020-2-20 20:57
可以可以

作者: kflizcst    时间: 2020-2-20 21:08
思路清奇
作者: 网络注册络员    时间: 2020-2-20 21:53
试一试哦   
作者: flfkhn2    时间: 2020-2-20 22:33
学习一下大神操作

作者: guduyouxi    时间: 2020-2-20 22:50
一试哦     1
作者: honfongu    时间: 2020-2-20 22:59
下载试试,谢谢
作者: 116154801    时间: 2020-2-20 23:01
6666666666666666666666666

作者: 无影踪    时间: 2020-2-21 00:05
感谢分享看看


作者: 名无所谓    时间: 2020-2-21 03:57
感谢分享
作者: happyweeks365    时间: 2020-2-21 07:31
回复看看是神马东东
作者: 反观后感    时间: 2020-2-21 08:28
。。。。。。。。。。。。。。。。。。。。。。
作者: xxdahai    时间: 2020-2-21 08:28
回复看看是神马东东
作者: 枫眼    时间: 2020-2-21 08:44
66666666666666666666666666666666666
作者: 冬夏    时间: 2020-2-21 08:54
可以作为什么用吗?
作者: haoyunlai    时间: 2020-2-21 09:50
66666666666666666
作者: static101    时间: 2020-2-21 10:12
花里胡哨的
作者: shinid8210    时间: 2020-2-21 10:19
虽然看不懂,但是感觉很厉害
作者: cf2006a    时间: 2020-2-21 10:44
进来学习下 什么 操作
作者: 安哥    时间: 2020-2-21 11:07
我来学习学习

作者: 安哥    时间: 2020-2-21 11:10
模块在哪下载
作者: 中国码农    时间: 2020-2-21 11:13
学习,学习
作者: 刘海斌    时间: 2020-2-21 13:37
支持凌哥,发出来的东西都棒棒的!
作者: SD1228    时间: 2020-2-21 13:51
支持凌哥,发出来的东西都棒棒的!
作者: 543068    时间: 2020-2-21 14:27
提示: 作者被禁止或删除 内容自动屏蔽
作者: hujiaxing    时间: 2020-2-21 14:51
谢谢LZ楼主辛苦
作者: 你不认识我    时间: 2020-2-21 15:06
学习,学习
作者: 酷易自绘    时间: 2020-2-21 16:22
谢谢LZ楼主辛苦

作者: 浅蓝蜗牛    时间: 2020-2-21 16:25
        感谢分享,很给力!~
作者: 六升臣    时间: 2020-2-21 16:29
吴涛辛辛苦苦整合翻译出来,你一下子就还原了
作者: 月光刀影    时间: 2020-2-21 16:39
学习学习。。。。。。。。。。。。。
作者: wjswzj0    时间: 2020-2-21 16:55
学习一下...................
作者: 17839710626    时间: 2020-2-21 19:06
这个ide这么骚
作者: wly    时间: 2020-2-21 21:44
标记一个,踩个点
作者: popu    时间: 2020-2-22 00:17
学习,感谢分享

作者: 千里追风    时间: 2020-2-22 09:22
感谢分享~~~

作者: luckfish45    时间: 2020-2-22 09:42
让 江小白 来看看帖子里藏了啥好东西~~~
作者: 司徒西    时间: 2020-2-22 10:02
吴涛辛辛苦苦整合翻译出来,你一下子就还原了.
作者: ck66    时间: 2020-2-22 10:02
        感谢分享,很给力!~
作者: 遍体鳞伤不够美    时间: 2020-2-22 10:32
新技能已get√
作者: hujiaxing    时间: 2020-2-22 11:46
谢谢LZ楼主辛苦
作者: bianyuan456    时间: 2020-2-22 19:51
已经顶贴,感谢您对论坛的支持!
作者: qck易语言    时间: 2020-2-22 20:39
emm,和申请内存不释放传递指针的区别是?
作者: 飞鱼软件    时间: 2020-2-22 21:17
新技能已get√
作者: gto250    时间: 2020-2-22 23:13
感谢分享~~~
作者: 爱的凌迟    时间: 2020-2-23 07:16
支持一下。。。

作者: 杨明煜    时间: 2020-2-23 11:28
好东西.................
作者: 榮耀    时间: 2020-2-23 17:07
感谢分享               

作者: 1051496412    时间: 2020-2-23 19:53
这个厉害
作者: z博士    时间: 2020-2-23 22:04
学习一下                                      

作者: 土豆拌螃蟹    时间: 2020-2-24 10:26
学习几下是几下
作者: 迷糊老师    时间: 2020-2-24 10:57
不错                     
作者: onion52013    时间: 2020-2-24 17:25
111111111111111111111111111

作者: Su·    时间: 2020-2-24 17:30

感谢分享~~~
作者: 信易达    时间: 2020-2-24 19:50

吴涛辛辛苦苦整合翻译出来,你一下子就还原了
作者: 扣扣    时间: 2020-2-24 20:09

好东西
作者: 唐少Cc    时间: 2020-2-24 21:03
支持支持一下
作者: kisl7979    时间: 2020-2-24 21:26
吴涛辛辛苦苦整合翻译出来,你一下子就还原了
作者: sofs    时间: 2020-2-24 23:28
这说的是啥。。。。
作者: 嘟嘟oο哇靠    时间: 2020-2-25 02:07
支持支持一下
作者: 云雀菌    时间: 2020-2-25 11:07
我就想知道你的ui怎么改的
作者: 差不多先生2    时间: 2020-2-25 16:14
什么鬼东西这么6P
作者: kanhaiyouyue    时间: 2020-2-25 16:57
66666666666
作者: a909254    时间: 2020-2-25 17:43
大佬666666666666666
作者: 你把我灌醉    时间: 2020-2-25 20:45
看看基金累计捐款

作者: Movax    时间: 2020-2-25 21:15
        感谢分享,很给力!~
作者: 简单513    时间: 2020-2-25 21:22
一下子就还原了
作者: 轻风影    时间: 2020-2-26 00:13
虽然看不懂,一定要看
作者: feng5555    时间: 2020-2-26 21:10
思路挺好,但是和其他方案有何区别
作者: feng5555    时间: 2020-2-26 21:11
我在测试下吧
作者: 一尘不染    时间: 2020-2-26 22:04
看看                           




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