服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 易语言 - 易语言代码中嵌入汇编/机器码方法

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

2021-06-23 16:16fortest 易语言

在本文中我们给大家分享了易语言代码中嵌入汇编/机器码的方法内容,有需要的朋友们可以跟着学习下。

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

我们都知道,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)也写过一个。说实话,这种小程序自己用,写的简陋些没关系,反正只是辅助程序,还可以随时调整嘛,但想发布的话,就要考虑通用性易用性,麻烦很多,况且用户也不多,所以发布此类程序的人很少,但是论坛上也确实有人发过。

感谢大家对服务器之家的支持

原文链接:https://www.cnblogs.com/fortest/archive/2008/09/18/2056967.html

延伸 · 阅读

精彩推荐
  • 易语言易语言设置进度条边框样式的方法

    易语言设置进度条边框样式的方法

    今天小编就为大家分享一篇关于易语言设置进度条边框样式的方法,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册4422022-01-20
  • 易语言易语言关于程序进程和线程的基础知识

    易语言关于程序进程和线程的基础知识

    今天小编就为大家分享一篇关于易语言关于程序进程和线程的基础知识,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起...

    三叶资源网6662022-02-24
  • 易语言易语言生成exe文件的方法

    易语言生成exe文件的方法

    在本篇内容中小编给大家分享的是关于易语言生成exe文件的方法知识点,需要的朋友们参考下。...

    易语言教程网14792022-03-01
  • 易语言易语言获取指定磁盘的名称

    易语言获取指定磁盘的名称

    今天小编就为大家分享一篇关于易语言获取指定磁盘的名称,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来...

    易语言帮助手册12662022-01-04
  • 易语言一步一步跟我学易语言之关于变量

    一步一步跟我学易语言之关于变量

    今天小编就为大家分享一篇关于一步一步跟我学易语言之关于变量,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随...

    易语言帮助手册10822021-06-17
  • 易语言实例操作易语言载入窗口

    实例操作易语言载入窗口

    在本文中小编给大家整理的是关于易语言载入窗口的教程和步骤内容,需要的可以跟着学习下...

    易语言教程网19162022-03-02
  • 易语言易语言在画板中写出指定文本当画板中已满会自动滚屏

    易语言在画板中写出指定文本当画板中已满会自动滚屏

    今天小编就为大家分享一篇关于易语言在画板中写出指定文本当画板中已满会自动滚屏,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,...

    易语言帮助手册9092022-01-12
  • 易语言一步一步跟我学易语言之第二个易程序菜单设计

    一步一步跟我学易语言之第二个易程序菜单设计

    今天小编就为大家分享一篇关于的一步一步跟我学易语言之第二个易程序菜单设计,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要...

    易语言帮助手册7092021-06-17