易语言yasm汇编引擎调用源码
.版本 2
.支持库 spec
.支持库 shell
.程序集 窗口程序集_启动窗口
.子程序 _按钮2_被单击
.局部变量 time, 整数型
.局部变量 BIN, 字节集
time = 取启动时间 ()
BIN = Yasm (0, 编辑框1.内容)
调试输出 (“time :” + 到文本 (取启动时间 () - time), BIN)
.子程序 Yasm, 字节集
.参数 byte, 整数型, 可空, 0=0x86 1=0x64
.参数 代码, 文本型
.局部变量 函数地址, 整数型, , , ' 本源码来自三叶资源网(www.sanye.cx)
.局部变量 模块句柄, 整数型
.局部变量 info, type_yasm
.局部变量 输出代码, 字节集
.局部变量 输出长度, 整数型
.局部变量 输出错误, 文本型
输出代码 = 取空白字节集 (取文本长度 (代码))
输出错误 = 取空白文本 (1024)
输出长度 = 0
info.type = 选择 (byte = 0, 0, 1)
info.pTextCode = 取变量数据地址 (代码)
info.pOutBin = 取变量数据地址 (输出代码)
info.pSize = 取变量数据地址 (输出长度)
info.pError = 取变量数据地址 (输出错误)
.如果 (汇编 (取变量数据地址 (info.type)))
输出代码 = 取字节集左边 (输出代码, 输出长度)
.否则
输出代码 = { }
调试输出 (输出错误)
.如果结束
返回 (输出代码)
.子程序 汇编, 逻辑型
.参数 info, 整数型
.局部变量 value, 整数型
.局部变量 ptr, 整数型
.局部变量 Hmoudle, 整数型
.局部变量 path, 文本型
path = 取特定目录 (11) + “yasm.dll”
.如果真 (文件是否存在 (path) = 假)
写到文件 (path, #yasm)
.如果真结束
value = 1
Hmoudle = LoadLibraryA (path)
.如果真 (Hmoudle < 1)
返回 (假)
.如果真结束
ptr = GetProcAddress (Hmoudle, “Yasm_asm”)
.如果真 (ptr < 1)
FreeLibrary (Hmoudle)
返回 (假)
.如果真结束
调用子程序 (ptr, , value, info)
FreeLibrary (Hmoudle)
返回 (value = 0)
易语言汇编引擎
易语言调用源码