
Linux平台下的MIX汇编器设计与实现.doc
25页. . . Linux平台下的MIX汇编器设计与实现The Design and Realization of MIX Compiler under 目 录第1章绪论11.1 Linux下编译的一般过程11.2 Makefile文件简介21.3 C++编程语言31.4 GCC编译器简介3第2章系统开发基础知识简介42.1 MIX系统与汇编语言简介42.1.1 MIX系统简介42.1.2 MIX指令集62.1.3 MIXAL汇编语言72.2 虚拟机技术简介8第3章系统总体规划与设计93.1 概要介绍93.1.1 MIX汇编语言的汇编93.1.2 MIX机器指令的载入93.1.3 MIX机器指令的运行93.2 汇编器概要设计103.2.1 词法分析器103.2.2 语法分析器103.2.3 代码生成器113.2.4 符号表113.2.5 错误处理模块113.3 汇编器主要数据结构与算法113.3.1 地址计数器LC 113.3.2 符号表113.3.3 未知标号表12第4章系统具体设计与实现134.1 MIX系统基本结构模块概述134.2 MIX虚拟机系统的具体实现134.2.1 Makefile文件154.2.2 MIX虚拟机主程序174.2.3 MIXAL汇编调试器主程序184.2.4 Assemble汇编程序18结论22参考文献2321 / 25摘 要MIX计算机是一个假想的计算机,它来源于著名的《计算机编程艺术》(the art of computer programing)。
现实中并没有真正的实体机器,为了学习这本书,作者就在自己的PC上实现该计算机的虚拟机以使书上的代码可以顺利运行C/C++是Linux操作系统平台下的主流语言,相对简便好用,就选用C++作为实现的主要语言,这涉与到Linux平台下的基本的C++编译的知识这部分编译知识与平常使用较多的Windows平台下的编译知识有着显著不同,所以会进行较多的介绍在一台电脑上模拟另一种体系结构不同的计算机涉与到了虚拟机的基本知识,虚拟机技术的核心是汇编技术本文首先简单介绍了Linux下编译的一般过程、Makefile文件以与开发环境,包括MIX系统、汇编语言以与虚拟机技术然后介绍了本系统的总体规划与设计最后讲述了系统具体设计与实现关键词MIX汇编器,VM技术,C/C++,LinuxABSTRACTMIX is a fictitious 16 bits computer created by D E.Knuth in his famous book—The Art of Computer Programming,and all algorithms in his book are coded by MIX assemble language. Nowadays computers 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++ compiler 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 computer system. The main idea of VM is involved the assemble technology.This paper firstly introduces the process of compilerunder Linux Platform, the file of Makefile and the background of the system.Then explains the design of this system as a whole. Finally, introduces the realize of this system.KeywordsMIX compiler, Vm technolegy, C++, Linux第1章 绪论MIX计算机是D.E.Knuth在其名著《计算机编程艺术》(The art of computer programming)中描述的一种计算机,他书中的所有算法都由该计算机的汇编语言实现。
但现实生活中并没有运行MIX体系结构的计算机,所以在现有的计算机上并不能直接运行书中的MIX汇编代码唯一的办法只有在现有的计算机上将MIX的主要体系结构加以模仿,使它可以运行书中的MIX汇编代码由于在Linux平台下并没有相关的软件存在,所以在Linux下构造这样一个具有MIX计算机系统结构的虚拟机具有开创性的意义实现的MIX汇编器的主要的作用是运行MIX汇编语言,它的主体部分是一个汇编器虚拟机的实现依赖于对计算机系统模仿,除去平台和语言的关系,最主要的技术是虚拟机技术,该技术通过软件的方法使在一台计算机上运行另一台体系结构完全不同的计算机的机器指令的想法成为了可能这其中最主要的代表便是Java虚拟机,它使Java语言实现了“平台无关性”因此借鉴这个很著名的虚拟机技术来实现对该系统的模拟会有性能上的保证下面,首先对编程的基本环境作一个简单的介绍,然后就开始介绍该虚拟机的设计与实现Linux平台下的编程习惯与Windows平台下有很大的不同,它很“原始”,基本上所有的东西都要自己设置,下面假定读者极少接触Linux,会对Linux平台下的编程技术作一个相对简要但清楚的介绍1.1 Linux下编译的一般过程Linux下没有.NET之类的集成开发环境。
它基本的开发工具是Vi,与Windows下的记事本很相像,在它上面输入源程序,然后用命令执行该程序Linux支持多种语言,例如C语言、C++语言以与perl语言等最常见和最重要的是C语言的编译器GCC与C++语言的编译器G++这个执行者有着多达一百条的编译命令在需要时让你输,并且需要编程者与操作系统直接打交道,对于需要操作系统功能调用的地方,程序员必须自己设置适合的系统调用以与库函数Linux下编写程序的基本步骤是:(1)用vi或Emacs写下源代码,保存2)用GCC编译它(在命令行下输入命令:gcc –编译选项 —保存名字.c)3)一般情况下,若编译无错误的话,会生成一个.out文件,键入如下命令运行它:名字.out当然在很多情况下不能一次就正确编译通过,会有很多错误需要改正和调试,这时候就可以用GCC自带的调试工具进行调试,直至可以运行以上仅是最一般的汇编过程,若是有多个源文件的大型程序,就不得不自己定义他们之间的相互依赖关系和编译调用关系,这就涉与到了Make工具和Makefile文件,这可能是与Windows平台下的编程习惯最不同的一点,所以对此作稍微详细的介绍1.2 Makefile文件简介Make工具能自动地确定一个大程序系统中哪些程序文件需要被重新编译,并发出命令对这些程序文件进行编译。
Make命令执行时,需要一个Makefile文件,以告诉Make命令需要怎么样去编译和程序Makefile关系到了整个工程的编译规则一个工程中的源文件不计其数,其按类型、功能、模块分别放在若干个目录中,Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至进行更复杂的功能操作,因为Makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令Makefile规则如下:target ... : prerequisites ... command ... ... (1)Target:是一个目标文件,也可以是执行文件,还可以是一个标签(Label)2)Prerequisites:就是要生成target所需要的文件或是目标3)Command:是make需要执行的命令(任意的Shell命令)这是一个文件的依赖关系,也就是说,Target这一个或多个的目标文件依赖于Prerequisites中的文件,其生成规则定义在Command中这就是Makefile的规则1.3 C++编程语言由于Linux操作系统平台的系统语言是C语言,因此它对C++语言也有着较好的支持。
Linux下的C++与C用同一个编译器GCC(G++事实上属于GCC),这个编译器也是与Windows操作系统下的一般编译器有着很大的不同,下面对这个编译器进行简要的介绍1.4 GCC编译器简介GCC(GNU Compiler Collection)是自由软件组织GNU开发的一款C/C++编译器,是Linux平台下的标准C/C++编译器,功能非常的强大,但使用也非常的繁琐由于Linux操作系统平台下没有集成开发环境,因此开发者不得不自己对程序进行编译和调试,而这个就要用到基本的编译选项,这时要注意多使用man选项查看基本的帮助第2章 系统开发基础知识简介本章介绍基本的MIX汇编知识和虚拟机的技术背景首先介绍MIX系统的结构和汇编语言,在此基础上简单介绍主要技术--虚拟机技术的基本原理2.1 MIX系统与汇编语言简介为了实现MIX汇编语言的正常运行,这样就必须涉与到汇编器的实现和MIX虚拟机的实现,而在真实的机器上汇编器和机器指令的执行二者的联系是相当紧密的作为实现的基础,在这里就将MIX系统结构和MIX汇编语言放在一起介绍2.1.1 MIX系统简介计算机系统包括CPU、存储器、外设、以与输入输出系统,MIX也不例外。
图2-1是文献[2]书中自带的一个图,用来说明MIX系统用到的基本结构MIX系统由CPU、一个具有四千个存储单元的存储器、外设为磁带和磁盘的几部分组成,下面就突出重点的介绍一下它的基本指令,机器指令的组成以与汇编语言的语法1CPU中使用的寄存器寄存器A和寄存器X是CPU中最常使用的寄存器,用作对数据进行算术运算和操作,A[accumulater]可以独立使用,也可与X[extension]连接使用,而就像看到的,A寄存器是基本寄存器也称低位寄存器,而X寄存器则是高位寄存器也称扩展位寄存器I是Index。





![河南新冠肺炎文件-豫建科[2020]63号+豫建科〔2019〕282号](http://img.jinchutou.com/static_www/Images/s.gif)






