易语言代码中嵌入汇编/机器码方法

 更新时间:2018年11月02日 15:58:23   作者:fortest  
在本文中我们给大家分享了易语言代码中嵌入汇编/机器码的方法内容,有需要的朋友们可以跟着学习下。

很多朋友在编写易语言里要混合插入汇编语言等,如何解决呢?我们来看下

我们都知道,C++或Delphi的程序源代码中可以嵌入汇编代码,以达到某些特定目的。易语言作为实用而又功能强大的编程语言,也允许在代码中嵌入汇编,——当然严格来说,是嵌入机器指令代码。借助“特殊功能支持库”中的“置入代码”命令,可以完成这项功能。(liigo 2009.03.20补记:自易语言4.12版本起,“置入代码”已被移入核心支持库。)

为什么要在易语言中“置入代码”呢?

  • 一是完成易语言不好直接完成的工作(例如,调用子程序,取变量地址,取对象方法地址,等等,当然,“置入代码”也不是唯一途径,通过外部支持库往往也能完成)
  • 二是提高代码执行效率(这个容易理解,不多说了)。

使用“置入代码”对程序员有什么要求?要熟悉汇编,会写汇编代码;会使用至少一种基于汇编的调试器(如Ollydbg);要了解或会分析易语言编译器生成的机器代码;要对易语言底层技术有所了解,如文本、字节集、数组等数据格式,参数传递方式,命令调用约定等。“置入代码”在易语言中属于“高级命令”,是专门为具有一定编程能力的高级程序员特别是熟悉汇编编程的专业人士提供的。一般初学者,如果半懂不懂,最好不要涉及,直接使用别人写好的模块或支持库比较好,毕竟易语言的功能已经足够强大,很多问题都已经有了现成的解决方案。

“置入代码”的原理。其实质是,在易语言编译过程中,编译器将“置入代码”的参数所指定的机器指令数据,直接输出到EXE/DLL中。因为这个动作是在编译时进行的,所以参数指定的机器码只能是常量,而不能是变量。同样,因为是编译时处理,运行时并不执行,因而程序执行时并不依赖支持库(即程序发布时不需携带特殊支持库spec.fne文件)。

使用“置入代码”都有什么步骤?

  1. 写出汇编代码;
  2. 通过汇编器将汇编代码编译为机器码;
  3. 将机器码转换为易语言字节集常量数据,并作为参数传入“置入代码”。

第一步没什么好说的,是考验汇编功力的地方,是硬功夫,没有技巧的。

第二步,我们可以借助“Ollydbg”等汇编器完成(当然也可以通过查询Intel x86 指令手册,纯手工将汇编代码编译为机器指令码,除非变态或超级牛叉的人不会采用)。首先启动Ollydbg,打开任意一个EXE程序,在汇编代码区双击任意一行,在弹出的汇编窗口中,输入第一步写好的第一行汇编代码,回车,就可以在机器指令区域(汇编代码区域左侧)看到相应的机器指令了,如此循环,逐行输入所有汇编代码,就可以得到相应的机器指令代码了。

第三步也相对容易,主要工作可能就是将Ollydbg生成的16进制指令代码转换为10进制。如果代码不长,借助“计算器”纯手工操作也行。一般来说,通常会用易语言写一个小程序,解析从Ollydbg中复制出的文本,提取其中的机器指令代码,进行数制转换,生成易语言字节集数据的文本格式。这种小程序很容易写,我想“置入代码”的使用者中很多人(据我了解不下10个)都写过类似的程序,我(liigo)也写过一个。说实话,这种小程序自己用,写的简陋些没关系,反正只是辅助程序,还可以随时调整嘛,但想发布的话,就要考虑通用性易用性,麻烦很多,况且用户也不多,所以发布此类程序的人很少,但是论坛上也确实有人发过。

感谢大家对脚本之家的支持

相关文章

  • 易语言修改IE协议头留言手机版网页

    易语言修改IE协议头留言手机版网页

    在本篇文章中小编给大家分享了关于易语言 修改IE协议头模拟手机浏览网页相关知识点内容,有兴趣的朋友们参考下。
    2018-11-11
  • 易语言取执行文件名命令使用讲解

    易语言取执行文件名命令使用讲解

    今天小编就为大家分享一篇关于易语言取执行文件名命令使用讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • 易语言取秒的用法和实例

    易语言取秒的用法和实例

    在本篇文章里小编给大家分享了关于易语言取秒的用法和相关知识点,需要的朋友们可以学习下。
    2019-02-02
  • 易语言将进度条当前进度显示出来的方法

    易语言将进度条当前进度显示出来的方法

    今天小编就为大家分享一篇关于易语言将进度条当前进度显示出来的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • 易语言屏蔽代码实例分享

    易语言屏蔽代码实例分享

    在本文里我们给大家整理了关于易语言屏蔽代码实例内容,需要的朋友们跟着步骤学习下。
    2019-02-02
  • 易语言领取QQ名片赞

    易语言领取QQ名片赞

    今天小编就为大家分享一篇关于易语言领取QQ名片赞,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-12-12
  • 易语言编写的算术题程序实例代码

    易语言编写的算术题程序实例代码

    在本篇文章中我们给大家分享了一个关于易语言编写的算术题程序,有兴趣的朋友们可以跟着参考下。
    2018-11-11
  • 易语言将指定数据类型转换为字节集类型

    易语言将指定数据类型转换为字节集类型

    今天小编就为大家分享一篇关于易语言将指定数据类型转换为字节集类型,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2018-11-11
  • 易语言取时间年月日格式化

    易语言取时间年月日格式化

    在本篇内容中小编给大家分享了关于易语言取时间年月日格式化的相关知识点以及源码内容,需要的参考下。
    2018-12-12
  • 易语言使用备份还原的方法

    易语言使用备份还原的方法

    在本篇内容里小编给大家分享了关于易语言使用备份还原的方法内容,需要的朋友们跟着学习参考下。
    2018-12-12

最新评论