通用型长度判断易语言源码易语言传递通用型,就像C的cdecl调用约定一样,被调函数不知道你传了多少个参数,每个参数多大,只有主调函数知道(所以cdecl需要外平栈),
易语言单纯的在调用的时候,是多大,就push多大,然后被调函数是不知道的,但是它默认就当成4字节了
第二个参数,传4字节的没有问题,正常输出1 2,如果第二个参数传了个8字节,后面的参数,就不识别了
顺带记录一下:易语言带通用型的也是stdcall,返回的时候当4字节处理了(如果计次循环里调用有通用型的参数,就会堆栈不平衡崩溃乱套了,其他情况没见崩溃大概是因为,易语言先集中申请了栈空间,后面不平衡会导致栈顶多了个,但是后续并不是通过栈顶定位变量的)
这个源码并不严谨,只是一个大概思路,call和push虽然汇编名字都叫这个,但是各自又有很多硬编码,长度也不一致,里面大概兼容了,push局部变量,立即数,和全局变量(push寄存器都没有),并且因为长度不一致,所以倒着判断回去的并不一定正确(我猜大概要找到一个边界,从头开始,依次分析,才能正确的拆分出所有指令,比如这个边界可以是一些易语言独有的特征),但是依然要逐字节分析字节码
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系贝贝进行处理。本站默认解压密码:www.hibbba.com
评论(0)