• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >易语言 > 易语言代码中嵌入汇编/机器码方法

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

作者:易语言帮助手册 字体:[增加 减小] 来源:互联网 时间:2018-11-19

易语言帮助手册通过本文主要向大家介绍了易语言,汇编,机器码等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

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

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

感谢大家对的支持

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 详解易语言写ec模块的方法
  • 简单的易语言多线程应用实例
  • 易语言修改IE协议头留言手机版网页
  • 易语言拖放对象组件应用详解
  • 易语言dll文件传递字节集参数解析
  • 易语言目录框的目录被改变后取得改变后的目录并在编辑框中显示
  • 易语言操作硬盘txt扫描删除
  • 易语言模拟客户组件post发送数据
  • 易语言BUG及解决办法
  • 易语言设置在驱动器框中显示指定的驱动器类型

相关文章

  • 2018-11-19易语言向指定窗口投递信息的方法
  • 2018-11-19一步一步跟我学易语言之第二个易程序菜单设计
  • 2018-11-19易语言加入成员命令使用讲解
  • 2018-11-19易语言取文本长度命令使用讲解
  • 2018-11-19易语言取得选择夹中所有子夹数量的方法
  • 2018-11-19编写高质量易语言代码注意点
  • 2018-11-19详解易语言的冒泡算法
  • 2018-11-19易语言重定义数组命令使用讲解
  • 2018-11-19易语言设置外形框线条效果的方法
  • 2018-11-19易语言取执行文件名命令使用讲解

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 易语言设置月历由星期几作为首日的方法
    • 易语言求次方命令使用讲解
    • 易语言编写的算术题程序实例代码
    • 易语言将日期框的字体加粗倾斜添加下划线等修改字体的方法
    • 一步一步跟我学易语言之子程序指针
    • 易语言基础教程之定义及变量
    • 一步一步跟我学易语言之初学者的常见问题
    • 易语言在画板中使用写出命令讲解
    • 易语言将画板上指定矩形区域的颜色翻转过来的方法
    • 易语言基础教程之定义及变量

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有