资源预览内容
第1页 / 共24页
第2页 / 共24页
第3页 / 共24页
第4页 / 共24页
第5页 / 共24页
第6页 / 共24页
第7页 / 共24页
第8页 / 共24页
第9页 / 共24页
第10页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
计算机组成与结构项目指南项目一 汇编指令到机器代码的转换程序(汇编器)一、 项目目标1. 掌握汇编器的设计方法;2. 为项目四CPU设计提供测试工具。二、 项目条件1. Linux操作系统;2. Linux操作系统程序开发工具GCC,GDB。三、 项目准备1. 安装Linux操作系统;2. 如果发现Linux默认安装没有带GCC、GDB等编译开发工具,那么要下载安装编译开发工具;3. 回顾教材A.1,A.2节中关于汇编器的内容;4. 利用图书馆或互联网资源,了解GCC命令(例如:http:/linux.die.net/man/1/gcc);5. 利用图书馆或互联网资源,了解GDB工具(例如:http:/www.ibm.com/developerworks/cn/linux/sdk/gdb/index.html)。四、 项目内容1. 假设有一个简单的CPU,它能访问64KB的存储器(CPU有16位地址输出,8位数据输入和输出),内部有3个程序员可见的寄存器AC, R和Z :程序员不可见的寄存器如下:当简单CPU启动时,所有寄存器都会被自动清零。简单CPU的指令集如下表所示:指令集表中 表示一个16位二进制地址(采用小端序保存)。因此LDAC, STAC, JUMP, JMPZ, JPNZ这5条指令都是3字节指令,其余指令为单字节指令。2. 请编写一个C程序,输入为该简单CPU的汇编指令序列(以文本文件形式提供),输出为该CPU的机器指令代码(以二进制文件形式保存);3. 用该简单CPU指令集中的指令编写一个汇编指令序列“sum10”,完成计算从1加到10的任务,并把结果保存到内存某个存储单元。以下为一段从1加到n的参考代码:可以根据以上代码的思路来完成sum10的编写(提示:可以把需要的常数10当作机器代码的一部分,也保存在二进制文件中可能需要增加数据伪指令。当机器代码装载到内存中时,该常数也被装入到某个内存单元,从而可以被LDAC指令按照地址读出);4. 用所编写的汇编器将汇编指令序列“sum10”翻译成二进制机器代码,并保存为一个二进制文件,为项目二提供测试例子。五、 思考问题1. 汇编器的基本功能是什么,基本设计方法是什么;2. 符号表是什么,地址计数器是什么,单趟汇编和多趟汇编有何区别;3. 实际的汇编语言通常支持标号(label),这有什么好处,应该怎么处理;4. 实际的汇编语言通常提供一些伪指令,其中包括定义数据的伪指令,它们的作用是什么;5. 本项目中,汇编器怎样设计,才能支持sum10的编写和翻译为二进制机器指令代码。六、 报告要求1. 项目报告需要有姓名,学号,班级,项目名称,项目目标,项目条件,项目内容,需求分析,设计方案,测试记录,项目总结等项目;2. 需求分析要描述汇编器实现的具体功能和要求,可接收输入的详细信息,可能产生的输出的详细信息;3. 设计方案有:(1)完成需求分析所提出的功能和要求解决的问题;(2)对所列问题的解决思路;(2)程序流程图;(3)程序各模块说明;4. 测试记录需要有如下信息:(1)项目机器CPU配置,内存配置,操作系统名称和版本号,内核版本号,GCC版本号,GDB版本号;(2)程序源代码,GCC编译命令文本;(3)测试输入例子说明和源代码;(4)输出结果记录和说明;5. 项目总结要根据项目目标,项目内容,需求分析,设计方案,测试记录,评估项目达到的效果;6. 设计方案和项目总结中要体现出对思考问题的回答,但不要逐条回答,而是融入到设计方案和项目总结本身的叙述中。项目二 机器代码到汇编指令的转换程序(反汇编器)一、 项目目标1. 掌握反汇编器的设计方法;2. 为项目一的汇编器设计提供验证工具。二、 项目条件1. Linux操作系统;2. Linux操作系统程序开发工具GCC,GDB;三、 项目准备1. 安装Linux操作系统;2. 如果发现Linux默认安装没有带GCC、GDB等编译开发工具,那么要下载安装编译开发工具;3. 回顾教材A.1,A.2节中关于汇编器的内容;4. 利用图书馆或互联网资源,了解GCC命令(例如:http:/linux.die.net/man/1/gcc);5. 利用图书馆或互联网资源,了解GDB工具(例如:http:/www.ibm.com/developerworks/cn/linux/sdk/gdb/index.html)。四、 项目内容1. 假设有一个简单的CPU,它能访问64KB的存储器(CPU有16位地址输出,8位数据输入和输出),内部有3个程序员可见的寄存器AC, R和Z :程序员不可见的寄存器如下:当简单CPU启动时,所有寄存器都会被自动清零。简单CPU的指令集如下表所示:指令集表中 表示一个16位二进制地址(采用小端序保存)。因此LDAC, STAC, JUMP, JMPZ, JPNZ这5条指令都是3字节指令,其余指令为单字节指令。2. 请编写一个C程序,输入为项目一中汇编器所生成的二进制机器代码文件,输出为该简单CPU的汇编指令序列(以文本文件形式保存)。请使用项目一中的sum10程序作为测试例子;3. 比较本项目反汇编器对sum10程序机器代码的输出,与项目一中sum10程序源代码,检查是否一致。如果不一致,分析是什么问题引起的,提出解决方案并实施。五、 思考问题1. 反汇编过程中,机器代码中包含的数据怎么识别和处理;2. 本项目中,sum10程序机器代码反汇编结果是否正确。如果有错误,如何改正,改正效果如何。六、 报告要求1. 项目报告需要有姓名,学号,班级,项目名称,项目目标,项目条件,项目内容,需求分析,设计方案,测试记录,项目总结等项目;2. 需求分析要描述反汇编器实现的具体功能和要求,可接收输入的详细信息,可能产生的输出的详细信息;3. 设计方案有:(1)完成需求分析所提出的功能和要求解决的问题;(2)对所列问题的解决思路;(2)程序流程图;(3)程序各模块说明;4. 测试记录需要有如下信息:(1)项目机器CPU配置,内存配置,操作系统名称和版本号,内核版本号,GCC版本号,GDB版本号;(2)程序源代码,GCC编译命令文本;(3)测试输入例子说明和源代码;(4)输出结果记录和说明;5. 项目总结要根据项目目标,项目内容,需求分析,设计方案,测试记录,评估项目达到的效果;6. 设计方案和项目总结中要体现出对思考问题的回答,但不要逐条回答,而是融入到设计方案和项目总结本身的叙述中。项目三 简单CPU模拟器一、 项目目标1. 掌握模拟器的设计方法;2. 为项目四CPU设计提供验证工具。二、 项目条件1. Linux操作系统;2. Linux操作系统程序开发工具GCC,GDB。三、 项目准备1. 安装Linux操作系统;2. 如果发现Linux默认安装没有带GCC、GDB等编译开发工具,那么要下载安装编译开发工具;3. 回顾教材A.1,A.2节中关于汇编器的内容;4. 利用图书馆或互联网资源,了解GCC命令(例如:http:/linux.die.net/man/1/gcc);5. 利用图书馆或互联网资源,了解GDB工具(例如:http:/www.ibm.com/developerworks/cn/linux/sdk/gdb/index.html)。四、 项目内容1. 假设有一个简单的CPU,它能访问64KB的存储器(CPU有16位地址输出,8位数据输入和输出),内部有3个程序员可见的寄存器AC, R和Z :程序员不可见的寄存器如下:当简单CPU启动时,所有寄存器都会被自动清零。简单CPU的指令集如下表所示:指令集表中 表示一个16位二进制地址(采用小端序保存)。因此LDAC, STAC, JUMP, JMPZ, JPNZ这5条指令都是3字节指令,其余指令为单字节指令。2. 请编写一个C程序,输入为该CPU的汇编指令序列(以文本文件形式提供),输出为该CPU执行每条对应于汇编指令的机器指令后各个寄存器的内容列表(以文本文件形式保存)。假设开始时CPU各个寄存器的内容为零;3. 用项目一设计的汇编指令序列“sum10”对所编写的模拟器进行测试。如果有错误,那么就改正,直到模拟结果正确。五、 思考问题1. 本项目模拟器的基本功能是什么,怎么设计;2. 本项目中,怎么验证模拟器的模拟结果是正确的。六、 报告要求7. 项目报告需要有姓名,学号,班级,项目名称,项目目标,项目条件,项目内容,需求分析,设计方案,测试记录,项目总结等项目;8. 需求分析要描述模拟器实现的具体功能和要求,可接收输入的详细信息,可能产生的输出的详细信息;9. 设计方案有:(1)完成需求分析所提出的功能和要求解决的问题;(2)对所列问题的解决思路;(2)程序流程图;(3)程序各模块说明;10. 测试记录需要有如下信息:(1)项目机器CPU配置,内存配置,操作系统名称和版本号,内核版本号,GCC版本号,GDB版本号;(2)程序源代码,GCC编译命令文本;(3)测试输入例子说明和源代码;(4)输出结果记录和说明;11. 项目总结要根据项目目标,项目内容,需求分析,设计方案,测试记录,评估项目达到的效果;12. 设计方案和项目总结中要体现出对思考问题的回答,但不要逐条回答,而是融入到设计方案和项目总结本身的叙述中。项目四 简单CPU设计一、 项目目标1. 掌握CPU的设计方法;2. 加深对CPU组成和工作原理的理解。二、 项目条件1. Linux或Windows操作系统;2. Quartus II电路设计软件;3. 项目一设计的汇编器;4. 项目三设计的模拟器。三、 项目准备1. 安装Quartus II软件;2. 回顾教材A.1,A.2节中关于汇编器的内容;3. 利用图书馆或互联网资源,了解Quartus II使用方法(例如:http:/wenku.baidu.com/view/561b32fcf705cc17552709c8.html)。四、 项目内容1. 假设有一个简单的CPU,它能访问64KB的存储器(CPU有16位地址输出,8位数据输入和输出),内部有3个程序员可见的寄存器AC, R和Z :程序员不可见的寄存器如下:当简单CPU启动时,所有寄存器都会被自动清零。简单CPU的指令集如下表所示:指令集表中 表示一个16位二进制地址(采用小端序保存)。因此LDAC, STAC, JUMP, JMPZ, JPNZ这5条指令都是3字节指令,其余指令为单字节指令。2. 请利用Quartus II软件设计该CPU的电路,可以参考如下所示的状态图,部分指令各个状态微操作的RTL描述,部分电路模块的设计:(1)参考状态图(2)参考微操作描述(3)参考数据通路(4)参考运算器设计(5)参考状态编码生成电路,该电路把每个状态看作是指令和节拍的组合,因此利用一个译码器来确定是哪条指令,用一个计数器来确定节拍,然后利用指令和节拍的组合来表示每个状态,如下所示:(6)数据通路各个控制信号生成的参考设计3. 用Quartus II软件进行
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号