windows系统-汇编语言与机器码的关系
接下來就讓我們進入到本章的前半部分。在前面章節中已經多次提到,計算機CPU能直接解釋運行的只有本地代碼(機器語言)程序。用C語言等編寫的源代碼,需要通過各自的編譯器編譯后,轉換成本地代碼。
通過調查本地代碼的內容,可以了解程序最終是以何種形式來運行的。但是,如果直接打開本地代碼來看的話,只能看到數值的羅列。如果直接使用這些數值來編寫程序的話,還真是不太容易理解。因而就產生了這樣一種想法,那就是在各本地代碼中,附帶上表示其功能的英語單詞縮寫。例如,在加法運算的本地代碼中加上add(addition的縮寫)、在比較運算的本地代碼中加上cmp(compare的縮寫)等。這些縮寫稱為助記符,使用助記符的編程語言稱為匯編語言。這樣,通過查看匯編語言編寫的源代碼,就可以了解程序的本質了。因為這和查看本地代碼的源代碼,是同一級別的。
不過,即使是用匯編語言編寫的源代碼,最終也必須要轉換成本地代碼才能運行。負責轉換工作的程序稱為匯編器,轉換這一處理本身稱為匯編。在將源代碼轉換成本地代碼這個功能方面,匯編器和編譯器是同樣的。
用匯編語言編寫的源代碼,和本地代碼是一一對應的。因而,本地代碼也可以反過來轉換成匯編語言的源代碼。持有該功能的逆變換程序稱為反匯編程序,逆變換這一處理本身稱為反匯編(圖10-1)。
圖10-1 匯編語言的源代碼和本地代碼是一一對應的
哪怕是用C語言編寫的源代碼,編譯后也會轉換成特定CPU用的本地代碼。而將其反匯編的話,就可以得到匯編語言的源代碼,并對其內容進行調查。不過,本地代碼變換成C語言源代碼的反編譯,則要比反匯編困難。這是因為,C語言的源代碼同本地代碼不是一一對應的,因此完全還原到原始的源代碼是不太可能的①。
Ps:①通過解析可執行文件得到源代碼的方式稱為“反匯編”或“反編譯”,也稱為“反向工程”。市場上銷售的軟件程序等,有時會在其使用說明書中明確表明禁止反匯編及反編譯。
總結
以上是生活随笔為你收集整理的windows系统-汇编语言与机器码的关系的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: C#中如何获取鼠标及控件的位置坐标(相对
- 下一篇: windows系统-函数的条件分支实现用