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