【正文】
) 00000LDA 2000(1:1) +00008 MIX指令集具體指令見圖22。3 MIX具體匯編指令使用舉例下面舉例說明指令的表達(dá)形式。在MIX里一個計(jì)算機(jī)字是5個字節(jié),一個字節(jié)含6位。(4)[F]:占一個字節(jié),F(xiàn)=8L+R,CM,I(F)通常寫成CM,I(L:R),表示該指令操作是相對于某內(nèi)存單元的第L字節(jié)至第R字節(jié)表示的內(nèi)容來做的。(2)[ ][ ]:占兩個字節(jié),即C M ,I(F) 中的M,就是內(nèi)存單元的編號(即地址),一個內(nèi)存單元就是一個計(jì)算機(jī)字的大小,即word=rA。一條指令是以一個符號位加上一個計(jì)算機(jī)字存放的:[+/] [ ] [ ] [ I ] [ F ] [ C ]。其中,C代表mand的,M代表memory,I代表index,F(xiàn)代表field。即J寄存器不能有負(fù)值存在。I寄存器的內(nèi)容假想為[+/][0][0][0][m][n]處理。J是Jump address,用于存放與jump指令相關(guān)的地址。1 CPU中使用的寄存器寄存器A和寄存器X是CPU中最常使用的寄存器,用作對數(shù)據(jù)進(jìn)行算術(shù)運(yùn)算和操作,A[accumulater]可以獨(dú)立使用,也可與X[extension]連接使用,而就像看到的,A寄存器是基本寄存器也稱低位寄存器,而X寄存器則是高位寄存器也稱擴(kuò)展位寄存器。圖21是文獻(xiàn)[2]書中自帶的一個圖,用來說明MIX系統(tǒng)用到的基本結(jié)構(gòu)。作為實(shí)現(xiàn)的基礎(chǔ),在這里就將MIX系統(tǒng)結(jié)構(gòu)和MIX匯編語言放在一起介紹。首先介紹MIX系統(tǒng)的結(jié)構(gòu)和匯編語言,在此基礎(chǔ)上簡單介紹主要技術(shù)虛擬機(jī)技術(shù)的基本原理。由于Linux操作系統(tǒng)平臺下沒有集成開發(fā)環(huán)境,因此開發(fā)者不得不自己對程序進(jìn)行編譯和調(diào)試,而這個就要用到基本的編譯選項(xiàng),這時(shí)要注意多使用man選項(xiàng)查看基本的幫助。Linux下的C++與C用同一個編譯器GCC(G++事實(shí)上屬于GCC),這個編譯器也是與Windows操作系統(tǒng)下的一般編譯器有著很大的不同,下面對這個編譯器進(jìn)行簡要的介紹。這就是Makefile的規(guī)則。(3)Command:是make需要執(zhí)行的命令(任意的Shell命令)。Makefile規(guī)則如下:target ... : prerequisites ... mand ... ... (1)Target:是一個目標(biāo)文件,也可以是執(zhí)行文件,還可以是一個標(biāo)簽(Label)。Makefile關(guān)系到了整個工程的編譯規(guī)則。 Makefile文件簡介Make工具能自動地確定一個大程序系統(tǒng)中哪些程序文件需要被重新編譯,并發(fā)出命令對這些程序文件進(jìn)行編譯。當(dāng)然在很多情況下不能一次就正確編譯通過,會有很多錯誤需要改正和調(diào)試,這時(shí)候就可以用GCC自帶的調(diào)試工具進(jìn)行調(diào)試,直至可以運(yùn)行。(2)用GCC編譯它(在命令行下輸入命令:gcc –編譯選項(xiàng) —)。這個執(zhí)行者有著多達(dá)一百條的編譯命令在需要時(shí)讓你輸,并且需要編程者與操作系統(tǒng)直接打交道,對于需要操作系統(tǒng)功能調(diào)用的地方,程序員必須自己設(shè)置適合的系統(tǒng)調(diào)用以及庫函數(shù)。Linux支持多種語言,例如C語言、C++語言以及perl語言等。 Linux下編譯的一般過程。下面,首先對編程的基本環(huán)境作一個簡單的介紹,然后就開始介紹該虛擬機(jī)的設(shè)計(jì)與實(shí)現(xiàn)。這其中最主要的代表便是Java虛擬機(jī),它使Java語言實(shí)現(xiàn)了“平臺無關(guān)性”。實(shí)現(xiàn)的MIX匯編器的主要的作用是運(yùn)行MIX匯編語言,它的主體部分是一個匯編器。唯一的辦法只有在現(xiàn)有的計(jì)算機(jī)上將MIX的主要體系結(jié)構(gòu)加以模仿,使它可以運(yùn)行書中的MIX匯編代碼。關(guān)鍵詞 MIX匯編器,VM技術(shù),C/C++,LinuxABSTRACTMIX is a fictitious 16 bits puter created by D in his famous book—The Art of Computer Programming,and all algorithms in his book are coded by MIX assemble language. Nowadays puters can not execute those codes, so I want to achieve the main system structure of this machine on my PC for learning this book. There is not a such software in the Linux platform, so that is a good idea to actualize it under the Linux platform. C/C++ are the system languages of the Linux operating system, and I choose the C++ as a main language. The C++ piler knowledge of the Linux operating system is very different from Windows’, so I shall give a particular introduction about it. The Virtual Machine technology is the central idea to “virtual” a machine, and of course it is the most important technology to the realization of MIX puter system. The main idea of VM is involved the assemble technology.This paper firstly introduces the process of piler under Linux Platform, the file of Makefile and the background of the explains the design of this system as a whole. Finally, introduces the realize of this system.Keywords MIX piler, Vm technolegy, C++, Linux第1章 緒論《計(jì)算機(jī)編程藝術(shù)》(The art of puter programming)中描述的一種計(jì)算機(jī),他書中的所有算法都由該計(jì)算機(jī)的匯編語言實(shí)現(xiàn)。然后介紹了本系統(tǒng)的總體規(guī)劃及設(shè)計(jì)。在一臺電腦上模擬另一種體系結(jié)構(gòu)不同的計(jì)算機(jī)涉及到了虛擬機(jī)的基本知識,虛擬機(jī)技術(shù)的核心是匯編技術(shù)。C/C++是Linux操作系統(tǒng)平臺下的主流語言,相對簡便好用,就選用C++作為實(shí)現(xiàn)的主要語言,這涉及到Linux平臺下的基本的C++編譯的知識。Linux平臺下的MIX匯編器設(shè)計(jì)與實(shí)現(xiàn)The Design and Realization of MIX Compiler under 目 錄第1章 緒論 1 Linux下編譯的一般過程 1 Makefile文件簡介 2 C++編程語言 3 GCC編譯器簡介 3第2章 系統(tǒng)開發(fā)基礎(chǔ)知識簡介 4 MIX系統(tǒng)及匯編語言簡介 4 MIX系統(tǒng)簡介 4 MIX指令集 6 MIXAL匯編語言 7 虛擬機(jī)技術(shù)簡介 8第3章 系統(tǒng)總體規(guī)劃及設(shè)計(jì) 9 概要介紹 9 MIX匯編語言的匯編 9 MIX機(jī)器指令的載入 9 MIX機(jī)器指令的運(yùn)行 9 匯編器概要設(shè)計(jì) 10 詞法分析器 10 語法分析器 10 代碼生成器 11 符號表 11 錯誤處理模塊 11 匯編器主要數(shù)據(jù)結(jié)構(gòu)及算法 11 地址計(jì)數(shù)器LC 11 符號表 11 未知標(biāo)號表 12第4章 系統(tǒng)具體設(shè)計(jì)與實(shí)現(xiàn) 13 MIX系統(tǒng)基本結(jié)構(gòu)模塊概述 13 MIX虛擬機(jī)系統(tǒng)的具體實(shí)現(xiàn) 13 Makefile文件 15 MIX虛擬機(jī)主程序 17 MIXAL匯編調(diào)試器主程序 18 Assemble匯編程序 18結(jié) 論 22參考文獻(xiàn) 23摘 要MIX計(jì)算機(jī)是一個假想的計(jì)算機(jī),它來源于著名的《計(jì)算機(jī)編程藝術(shù)》(the art of puter programing)?,F(xiàn)實(shí)中并沒有真正的實(shí)體機(jī)器,為了學(xué)習(xí)這本書,作者就在自己的PC上實(shí)現(xiàn)該計(jì)算機(jī)的虛擬機(jī)以使書上的代碼可以順利運(yùn)行。這部分編譯知識與平常使用較多的Windows平臺下的編譯知識有著顯著不同,所以會進(jìn)行較多的介紹。本文首先簡單介紹了Linux下編譯的一般過程、Makefile文件以及開發(fā)環(huán)境,包括MIX系統(tǒng)、匯編語言以及虛擬機(jī)技術(shù)。最后講述了系統(tǒng)具體設(shè)計(jì)與實(shí)現(xiàn)。但現(xiàn)實(shí)