麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > 易語言 > 正文

易語言代碼中嵌入匯編/機器碼方法

2024-07-21 02:55:02
字體:
來源:轉載
供稿:網友

很多朋友在編寫易語言里要混合插入匯編語言等,如何解決呢?我們來看下

我們都知道,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)也寫過一個。說實話,這種小程序自己用,寫的簡陋些沒關系,反正只是輔助程序,還可以隨時調整嘛,但想發布的話,就要考慮通用性易用性,麻煩很多,況且用戶也不多,所以發布此類程序的人很少,但是論壇上也確實有人發過。

感謝大家對VeVb武林網的支持


注:相關教程知識閱讀請移步到易語言教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: av噜噜噜噜 | 欧美精品一级 | 国产精品免费观在线 | 欧美综合日韩 | 国产精品久久久久久影视 | 日韩黄色片免费看 | 免费午夜视频在线观看 | 91 在线观看 | 成人男女啪啪免费观看网站四虎 | 女人叉开腿让男人桶 | 久久九九热re6这里有精品 | 久久最新网址 | 99ri在线| 欧美性生活区 | 欧美成人精品一区二区三区 | 午夜影院在线免费观看 | 国产一国产一级毛片视频在线 | 日本成人一区二区 | 欧产日产国产精品乱噜噜 | h视频免费在线观看 | 亚洲成人欧美在线 | 56av国产精品久久久久久久 | 欧美交在线 | 国产亚洲精品yxsp | aa国产视频一区二区 | 精品在线一区二区三区 | 国产激情精品一区二区三区 | wwwav国产 | 久久久经典视频 | 一级毛片在线免费播放 | 国产精品99久久久久久久 | 男人午夜小视频 | 久久成人精品视频 | 国产精品久久久久久久久久10秀 | 综合网天天射 | 黄色免费在线电影 | 91看片在线播放 | 久久精品一区二区三区不卡牛牛 | 九九热精 | 免费在线观看亚洲 | 在线成人一区二区 |