易语言汇编调用libcurl平衡堆栈的黑科技

易语言本身网络传送支持库真的不想再吐槽了,丢了Moe.Re 5份投稿原因不明,只好去寻找有没有更合适的解决方案,于是看中了libcurl。

可惜在之前开发的时候就使用过一次,按易语言提供的DLL命令调用WINAPI方式,使用的是stdcall(被调用方平衡堆栈)。一直出现堆栈错误,非常纠结,于是拉来Ovear大神协助。

在查资料过程中才知道易语言是可以用汇编方式调用cdecl方式(调用方平衡堆栈)的DLL命令的,需要自己写平衡堆栈。

在Ovear大神的协助下得知,动态在入完DLL之后初始化后,继续执行DLL命令需要把变量全部转为指针传参,同时在执行其它命令之前需要平衡堆栈,平衡堆栈的16进制代码写在下方,谷度查到这篇文章的读者需要的自取。

E8 00 00 00 00 58 83 E8 05 50 05 AA 00 00 00 50
E8 05 00 00 00 E9 90 00 00 00 8B 44 24 04 8D 88
78 03 00 00 3B C1 73 75 BA 00 00 00 E8 81 38 74
0D 68 06 75 05 39 50 04 74 12 40 3B C1 72 EE 8B
44 24 08 C7 00 E9 A5 00 00 C2 08 00 8B 48 FD 83
C0 FD 81 C9 FF FF 00 FF 83 C0 04 8B D1 83 C0 04
81 E2 29 65 FF 03 C1 E9 08 89 50 F8 81 E1 65 FF
90 00 81 C9 00 00 00 90 89 48 FC C7 00 90 90 90
90 83 C0 04 C7 00 90 90 90 90 66 C7 40 04 90 90
8B 44 24 08 C7 00 E9 A5 00 00 C2 08 00 8B 4C 24
08 C7 01 E9 A5 00 00 C2 08 00

置入以上代码平衡堆栈后易语言就不会出现堆栈错误了。目测国内还没人用易语言实现过,全国首发哟~

汇编黑科技真心强大啊_(:з」∠)_下次面基必需请Ovear吃饭了

想用客户端上传的基友们再等等吧,等我翻译完DLL命令重新写一下上传部分的代码。

易语言汇编调用libcurl平衡堆栈的黑科技 有 10 个评论

发表评论

电子邮件地址不会被公开。 必填项已用*标注