【VC++开源代码栏目提醒】:以下是网学会员为您推荐的VC++开源代码-论文范例(批注) - 毕业设计,希望本篇文章对您学习有所帮助。
湖南机电职业技术学院 毕业
论文(设计) 批注 F1: 2 号黑体 基于 ARM7 的嵌入式游戏 系统设计与实现作 者 姓 名 胡 杰 批注 F2: 小四宋体所 属 系 部 信息工程系指 导 教 师 廖 坚专 业 班 级 信管 0801 批注 F3: 统一填 2011 年 6
论文提交日期 2011 年 6 月 25 日 月 25 日 湖南机电职业技术学院信息工程系毕业设计(
论文) 第I页 批注 F4: 小 3 号黑体 基于 ARM7 的嵌入式游戏系统设计与实现 批注 F5: 3 号黑体 摘 要 批注 F6: 空一行 批注 F7: 小四宋体 嵌入式系统的应用开发给计算机技术的应用带来一个广阔的发展空间。
在当前数字信息技术和网络技术高速发展的后 PC(Post-PC)时代,嵌入式系统已经广泛地渗透到科学研究、工程设计、军事技术、各类产业和商业文化艺术以及人们的日常生活等方方面面中。
随着国内外各种嵌入式产品的进一步开发和推广,嵌入式技术越来越和人们的生活紧密结合。
基于嵌入式处理器的软硬件设计成为了当今 IT 业一个极为热门的话题。
嵌入式系统的核心是嵌入式处理器。
采用 RISC 架构的 ARM 微处理器具有体积小、低功耗、低成本、高性能等优良的特点为其赢得了众多的用户和占据了大量的市场份额。
而 ARM 微处理器家族中的 ARM7 系列微处理器最适合用于对价位和功耗要求较高的消费类应用。
本人希望通过在嵌入式平台上用 C 语言实现俄罗斯方块这一经典游戏来了解嵌入式开发平台和掌握其软件开发流程。
同时让自己对计算机硬件有更深的了解和提高自己的工具的使用及编程能力。
本文首先对嵌入式系统及相关技术做了一个大体介绍,接着是需求分析说明,最后 批注 F8: 空一行是系统实现的阐述。
批注 F9: 此处空一行 批注 F10: 4 号黑体关键词: 嵌入式系统,ARM,C 语言,俄罗斯方块,微处理器 批注 F11: 小四宋体 湖南机电职业技术学院信息工程系毕业设计(
论文) 第 II 页 批注 F12: 目录为自动生 目 录 成,最多三级1 绪论.................................................................. 1 1.1 课题背景及目的.............................................................. 1 1.1.1 为什么要设计虚拟机 ........................................................ 1 1.1.2 虚拟机反对派观点 .......................................................... 1 1.2 国内外研究状况.............................................................. 2 1.3 课题研究方法 ................................................................ 2 1.4
论文构成及研究内容 ......................................................... 22 SVM 虚拟机设计........................................................ 3 2.1 运形时系统与虚拟机 ......................................................... 3 2.2 SVM 虚拟机 ................................................................. 3 2.3 SVM虚拟机处理器设计 ....................................................... 5 2.3.1 机器处理器设计............................................................ 5 2.3.2 SVM虚拟机处理器设计....................................................... 6 2.4 SVM内存分配 ................................................................ 8 2.5 SVM内存寻址 ................................................................ 8 2.6 SVM 多字节存储方式 ........................................................ 8 2.7 SVM输入输出 ................................................................ 9 2.8 SVM 中断 ................................................................... 10 2.9 SVM 汇编器 ................................................................ 16 2.10 SVM 反汇编器 ............................................................. 18 2.11 SVM 调试器 ............................................................... 18 2.11.1 概述 .................................................................... 18 2.11.2 调试技术 ................................................................ 19 2.11.3 SVM 调试器的实现........................................................ 19 2.12 建造运行时系统 ........................................................... 20 2.13 SVM 虚拟机的扩展......................................................... 203 SVM 虚拟机运行时环境................................................. 22 3.1SVM执行方式 ................................................................ 22 3.2 SVM调试方式 ............................................................... 234 程序设计处理......................................................... 27 4.1 程序设计中的宏处理 ........................................................ 27 4.2 程序设计中的异常处理 ...................................................... 28总 结................................................................ 31致 谢................................................................ 33参考文献................................................................ 34 湖南机电职业技术学院信息工程系毕业设计(
论文) 第1页 批注 F13: 3 号黑体 1 绪论 批注 F14: 小 4 号黑体1. 1 课题背景及目的 批注 F15: 小 4 号黑体1.1.1 为什么要
设计虚拟机 批注 F16: 正文小四宋体 就软件工业的发展趋势而言,一方面是需要运行在多种计算机平台之上的实用系统 1.5 倍行间距越来越多,另一方面是以
网络为中心的计算情况越来越多,虚拟机也重新成为软件工业的一个潮流。
基于单一操作系统的软件开发工具已经不能满足软件工程师的需要。
面对杂乱的信息系统和日新月异的技术发明,软件工程师们开始重新审视开发虚拟机的优点。
编写虚拟机是软件开发项目的一种,它体现了一种使投资价值最大化的思路。
为了从资源方面的投资得到最大的回报,企业都希望自己花钱开发出来的软件的使用期限能够尽可能地长。
把软件包从一种平台移植到另一种平台的工作需要花费不小的成本,而且并不是所有的软件包都能够移植到所有的平台上去,
软件包所能支持的平台种数是有限度的。
大量事实表明,软件移植工作往往会变成一场噩梦。
使用虚拟机就可以在一定程度上避免这类事情的发生。
当遇到一种新硬件平台或者新操作系统的时候,唯一需要移植的应用级软件就是虚拟机本身1。
1.1.2 虚拟机反对派观点 有不少人反对使用虚拟机,他们的观点有许多种,其中最主要的就是虚拟机会降低程序的执行性能。
他们认为,编译型语言——如 C 语言——是以计算机自身的机器码的形式执行的,因此会执行得更快些。
但这种说法并不一定正确。
纯粹的 C
代码并不一定比由虚拟机执行的字节码(byte code)更快。
程序的执行时间主要消耗在运行时库以及内核模式中断处理例程方面,只有当处理的
代码是完全孤立且没有调用任何用户库或系统调用时(因为程序要等待系统的响应)才能百分之百肯定其机器码会执行得更快。
对于企业应用级系统,虚拟级在可移植方面的优势足以弥补这些其实并慢不了多少的性能损失1。
湖南机电职业技术学院信息工程系毕业设计(
论文) 第2页1.2 国内外研究状况 一个商业级的虚拟机实现是极其复杂的, 其 一个
开源虚拟机 bochs 做得很好, 2.0.2版在 Win32 平台下的有 13 万行源
代码(C/C)。
能在其上运行 minux
linux 前身,FreeDSB Windows95,Windows NT 4.0 等操作系统。
另一种虚拟机有自己的指令集,它是针对一种语言来的。
比如 JVMJAVAvirtual machine JAVA 虚拟机。
.
NET 平台。
而由 JVM 所支持的 JAVA 语言,目前正得到广泛的应用。
1.3 课题研究方法 一台虚拟机与一台真实存在的计算机的不同之处在于前者只是一个技术规范。
这类技术规范由一系列规则构成,而软件工程师可以采用任何他自己认为适当的手段来实现这些规则。
这就使虚拟机能够做到与具体的计算机平台无关。
对一台虚拟机来说,只要它能够遵从其技术规范里的各项规则,就可以存在于任何一种计算机平台上,就可以用任何一种计算机语言来编写1。
我的
毕业设计所做的虚拟机采用标准 C/C语言编写,在结构上模仿了 8086
计算机体系结构。
1.4
论文构成及研究内容 本
论文作为对虚拟机开发的一个尝试,实现的部分偏重于 CPU 也即指令执行部件。
而对于虚拟机这个运行时系统的另一个很重要的部分——中断处理,由于涉及面太广, ,INT 20H 中断(退出程序)故只是象征性的实现了 INT 10H 0EH 中断(向屏幕输出) 。
我做的虚拟机取名为 SVM(simple virual machine)——简单的虚拟机。
论文中将主要说明整个 SVM 虚拟机的设计实现过程,由于涉及到编程语言 C/C,也参考了一些程序设计书上的内容,在文中一并写出来。
以后略…… 湖南机电职业技术学院信息工程系
毕业设计(
论文) 第3页 批注 F17: 另起一页,3 号 2 SVM 虚拟机设计 黑体2.1 运形时
系统与虚拟机 运形时系统run-time system是各种计算机程序在其中得以执行的一个环境。
运行时系统提供了程序在执行时所需要的一切东西。
例如,运行时系统要负责为应用程序分配内存,把该应用程序加载到分配好的内存里,然后开始执行该程序中的指令。
如果该程序通过调用系统调用要求位于底层的操作系统提供服务,该运行时系统还必须负责处理有关的服务请求。
例如,如果应用
程序需要进行文件 I/O 操作,运行时系统就必须向它提供一种与磁盘控制器进行
通信并提供读写访问的机制。
运行时系统的种类有很多。
对运行时系统进行分类的一个办法是把它们按执行程序指令的基本方式进行划分。
对那些以处理其本身的机器码为指令的程序而言,某计算机的处理器和操作系统就构成了与之对应的运行时系统,处理器提供了一种执行指令的机制。
CPU 把编码为数值形式的指令从内存里取出并根据那些指令完成相应的动作,操作系统则实现了由处理器和操作系统构成的这个运行时系统的策略部分。
CPU 负责执行指令, 操作系统负责决定事情何时,何地发生。
对那些用机器指令编写的程序来说,计算机本身就是一个运行时系统。
程序的指令由物理 CPU 在机器级上执行,指令执行的具体过程由操作系统管理。
这类运行时系涉及计算机硬件和软件。
那些指令不由物理处理器来直接执行的程序需要一个完全由软件构成的运行时系统。
在这种情况下,程序的指令将由一台虚拟机来执行。
虚拟机是类似于计算机的一个软件程序,它会像真正的处理器那样取出并执行程序指令,但两者的区别在于虚拟机的指令执行过程发生在软件级而不是硬件级,即指令是由软件而不是硬件执行的1。
2.2 SVM 虚拟机 SVM 虚拟机是通过模拟硬件平台而实现的。
SVM 采用 8086 指令集。
这样可以省去一些建造虚拟机的重要步骤——比如,指令集不用重建(事实上,我也没有能力去定 。
SVM 虚拟机采用单任务方式,每次只运行一个程序。
义一个完备的指令集) 湖南机电职业技术学院信息工程系毕业设计(
论文) 第4页虚拟机总体结构如下: 批注 F18: 按章节图序命 图 2.1 虚拟机总体结构 名,图序和图名置于图下居 中,5 号宋体SVM 虚拟机源文件组成:c8086.h 声明 8086 处理器类;c8086.cpp 实现 8086 处理器类;ram.h 声明内存类;ram .cpp 实现内存类;disasm.h 反汇编函数声明;disasm .cpp 反汇编函数定义;debug.h 调试器函数声明;debug.cpp 调试器函数定义;fileLoader.h com 文件加载函数声明;fileLoader.cpp com 文件加载函数定义; 湖南机电职业技术学院信息工程系毕业设计(
论文) 第5页global.h 全局数据类型定义;test_CPU.cpp SVM 测试程序主函数。
编译执行环境:运行,开发平台:Windows 98 SE Windows 2000 professional SP4编译器:Visual C 6.0/7.0(
VC 是对标准 C/C支持很好的一个编译器)2.3 SVM虚拟机处理器设计2.3.1 机器处理器设计 中央处理器可以实现为基于寄存器或者基于堆栈的机器。
一个基于寄存器的处理器,如 Intel 公司的 Pentium 芯片,有 8 个用来完成基本运算的 32 位寄存器。
一个基于堆栈的处理器,如 Harris 半导体公司的 RTX32P 芯片,有两个用来完成基本运算的片上堆栈。
基于堆栈的处理器在嵌入式系统中比较流行,这是因为这类处理器支持比较短小的程序,在资源有限的场合也能
工作得很好。
同时函数调用在基于堆栈的机器上完成得也更有效率,因为函数参数都已经被放到堆栈里去了。
而在一台基于寄存器的机器上,函数参数必须逐个收集并压入堆栈,这就需要做更多的工作。
上下文切换在基于堆栈的机器上的开销也比较小。
如果是在一台基于寄存器的机器上进行上下文切换,就必须把它所有的寄存器的状态都保存起来。
对拥有大量寄存器的 RISC 体系结构来说,上下文切换是一个消耗内存的操作。
基于堆栈的机器就不存在这种
问题。
基于堆栈的计算机可以为每个进程分别准备一个堆栈,切换上下文时只需变一下堆栈就行了。
既然有这么多的优点,基于堆栈的机器为什么没有成为计算机体系结构的主流呢?这是因为基于寄存器的处理器有一个极其重要的优势:速度快。
寄存器就在CPU的内部,如果是对保存在寄存器里的数据进行运算,那它的运算速度将是非常快的。
Intel 公司在它新推出的 64 位处理器Itanium里安排了好几百个片上寄存器,目的就是为了让程序 湖南机电职业技术学院信息工程系毕业设计(
论文) 第6页操作尽可能多地在芯片上执行。
再看基于堆栈地处理器,它们的片上堆栈几乎总是会延伸到内存里去。
这就造成了这样一种后果:即使执行的是一个面向堆栈的基本操作,处理器也不得不到内存里去读取数据。
这就大大降低了基于堆栈的处理器的执行速度。
并 ,因为指令的执行过程更清晰(一部分操且基于寄存器的处理器比较容易调试(debug)作数在寄存器中,在运算完后还可以检查参与运算的数值是多少)1。
批注 F19: 按章节表序命 表 2.1 基于寄存器的处理器和基于寄存器的处理器的优缺点 名,表序和表名置于表上居 中,5 号黑体加粗 基于堆栈的处理器 基于寄存器的处理器 优点 比较小的内存开销 基本操作比较快(整体性能更好) 比较快的函数调用 执行过程比较清晰(易于调试) 缺点 比较快的进程切换 上下文切换时要消耗大量内存 基本操作比较慢 调用函数时要多做很多工作2.3.2 SVM虚拟机处理器设计 由于虚拟机完全由软件构成,没有硬件设备,所以它不存在刚才提到的某些缺陷。
与硬件处理器的分类相似,虚拟机也有基于堆栈和基于寄存器之分。
JVM 就是基于堆栈的。
这可以使 JAVA 字节码文件很短。
直接采用 8086 指令集。
而我将 SVM 虚拟机的中央处理器实现为基于寄存器的机器。
要知到,设计一个完备的指令集可不是一件简单的事,至少我还没有那种实力。
SVM虚拟机的设计目标是能够运行原 8086 平台下的部分 16 位 com 程序程序只能使用除去HLTWAITINOUTLOCKESC 的 88 条指令,并限制使用 INT 指令。
SVM 虚拟机处理器的组成:寄存器 湖南机电职业技术学院信息工程系毕业设计(
论文) 第7页 SVM 虚拟机有 8 个通用整数寄存器, 个段寄存器, 4 一个指令指针,一个指令指针, 。
这些寄存器及其用途如图所示:一个标志寄存器(它有 16 位,但只使用其中的 9 位) 表 2.2 寄存器及其用图 AX AHAL 整数寄存器(累加器) BX BHBL 整数寄存器 (基数寄存器) CX CHCL 整数寄存器 (计数器) DX DHDL 整数寄存器 (数据寄存器) BP 基址指针 SP 堆栈指针 SI 源变址寄存器 DI 目标变址寄存器 CS
代码段寄存器 DS 数据段寄存器 SS 堆栈段寄存器 ES 扩展段寄存器 IP 指令指针 FLAG 标志位其中,AXBXCXDX 都能划分为两个 8 位寄存器。
一个用来保存低字节,一个用来保 湖南机电职业技术学院信息工程系毕业设计(
论文) 第8页存高字节(如 AX 寄存器可以划分为 AH 和 AL)。
运算单元由 C8086 类(在 C8086.C 中)的成员函数实现。
2.4 SVM内存分配 SVM 虚拟机在启动时会请求分配 1M 字节.