:http://www.luocong.com/learningopcode.htm,遺憾的是作者從開始寫這份教程一直到現(xiàn)在差不多兩年時間過去了還沒有完成,不過前面的文章對于理解opcode的基本概。一份關于兩個匯編語言級別模擬CPU的虛擬機的分析文檔( 二 )。" />

日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

一份關于兩個匯編語言級別模擬CPU的虛擬機的分析文檔( 二 )

<<學習opcode>>:http://www.luocong.com/learningopcode.htm,遺憾的是作者從開始寫這份教程一直到現(xiàn)在差不多兩年時間過去了還沒有完成,不過前面的文章對于理解opcode的基本概念已經(jīng)足夠了 。opcode看起來好像很高深,其實它就在我們身邊,在linux上有一個objdump的反匯編軟件可以反匯編二進制文件,比如這樣的一段反匯編的代碼:

代碼:

116: 89 e5 mov %esp,雙

其中的116是指令地址,而89 e5就是指令mov %esp,雙 所對應的opcode 。

總結一下,設計一個匯編語言級別的虛擬機至少需要以下的部件:1)內(nèi)存空間,用于存放機器指令之用 。2)寄存器:用于保存程序運行的狀態(tài),暫存數(shù)據(jù)等等之用 。3)匯編器,匯編器的功能就是把匯編指令翻譯成cpu指定的機器指令,然后將指令裝入虛擬機的內(nèi)存之中 。4)指令集,指令集包括了指令的助記符,也就是匯編語言中的指令,還需要有每個指令所對 應的機器指令也就是OpCode,助記符由匯編器處理翻譯成為機器指令,最后在cpu執(zhí)行的時候根據(jù)不同的機器指令來執(zhí)行相關的操作 。

雖然這兩個虛擬機的設計略有不同,但是由于都是模擬的匯編語言級別的cpu,所以工作過程大體都是一致的,把握這個運行的過程是正確掌握這兩個源代碼的關鍵所在!虛擬機運行的大體過程如下:首先由匯編起掃描匯編源文件,將匯編指令也就是機器指令的助記符翻譯為機器指令,如果沒有錯誤就把機器指令加載到內(nèi)存之中,這時匯編器的任務就結束了;然后由虛擬機讀取已經(jīng)裝載到內(nèi)存中的機器指令,根據(jù)機器指令對應的操作來執(zhí)行指令 。
ok,這里基本上把一些基本的概念解釋完了,后面緊跟著就可以開始我們的虛擬機之旅了....

推薦閱讀