易语言写支持库继续玩“花”儿:命令_置入代码
在上一篇博客“易语言写支持库也能玩出“花”儿来(易写易库(EXEK)进展5)”中,玩了几个“花”儿,下面继续玩“花”儿。
易语言程序员大概都知道易语言有一个官方的“特殊功能支持库”,这个支持库果然名副其实,够“特殊”。其中有一个命令“置入代码”非常的特殊:它能把它的参数视为x86机器码插入到编译生成的EXE中!我们知道,一般支持库中的命令,仅在程序运行期执行;而“置入代码”这个命令,竟然影响了易语言编译器的编译行为!而且,使用了本命令的易语言程序,运行时不依赖支持库文件(spec.fne),即,它仅在编译期生效。
那么,能不能使用“易写易库(EXEK)”写出一个与“置入代码”功能等同的命令来呢?当然可以。
我写了一个很简单的支持库,里面只有一条命令,“命令_置入代码”,功能与“置入代码”相同,参数和返回值也完全相同,可独立于特殊功能支持库工作。
下载:myspec.fne,51K。
最简单的验证此支持库命令功能的方式是,调用“命令_置入代码({ 204 })”,调试执行,看程序是否会中断在下一行代码处。如果你怀疑我内部调用了特殊功能支持库的“置入代码”命令,不妨事先将spec.fne文件移走。(注:204 是指令 int3 的机器码,软中断。)
这只是一个“花”儿,没有什么实用价值,特此声明。
补充一点:
大部分的普通易语言用户对“置入代码”可能比较陌生,毕竟熟悉汇编指令甚至X86机器码的并不多见。但是,这条命令真的非常有用,在特定情况下,几乎离了它不行。易写易库(EXEK)模块内部就多处应用了该命令。
2008.10.1补记:
两点:一、编写一个与“置入代码”功能等同的命令,其实方法非常简单,明眼人一看便知(本文有忽悠人之嫌)。二、从易语言4.12开始,“置入代码”已从特殊功能支持库移入核心库。