理解计算机系统组成原理 - 运用Java编程的工具rPeANUt

本文介绍了rPeANUt,一个用于学习计算机组成原理的Java编程工具,通过它可模拟微处理器内部工作,理解硬件执行步骤。文章详细描述了rPeANUt的结构、指令集、汇编机和硬件中断,提供了使用rPeANUt的简单示例。
摘要由CSDN通过智能技术生成

本文原创所有,未经允许不得转载,请尊重作者权利。

-----------------------------------------------------------------------------------------------

前段时间在知乎看到一个问题,国外的计算机专业 是如何教 《计算机组成原理》 这门课的?http://www.zhihu.com/question/38838088

就如题主反应的一样,国内对计算机组成原理(国外多称计算机系统Computer System)的教学大多刻板,艰深晦涩。

本文通过整理澳大利亚国立大学对Computer System的教学过程,借鉴先进技术,利用学习工具,也再一次对计算机组成原理的知识进行了一次复习。

学习的核心是依靠一款Java编程的工具rPeANUt,可以在bitbucket上找到,但是网站提供的版本并非最新。

文末将会附贴最新的rPeANUt下载链接和英文原版使用说明。

------------------------------------------------------------------------------------------------------------------------

rPeANUt是一个汇编机微处理器,可以在其中进行基本的代码开发和理解真实的微处理器内部是如何进行处理的(即硬件内部的执行步骤)。

下图是rPeANUt机的内部构成。


介绍

       rPeANUt机是一个用于在澳大利亚国立大学中教学计算机系统所制作的一个简单微处理器。这是一个Java编程实现的汇编模拟器。这份文件旨在描述一个汇编机微处理器,为了学生可以进行代码编程和理解真实的微处理器内部是如何进行编程开发的。

 

rPeANUt机 – 概述

       rPeANUt是一个32位微处理器,拥有16位地址、32位寄存器以及可寻址的字长32位内存存储。最大的地址存储数目是216=65536字长即262144字节(256K)。只有0x0000到0x7FFF地址被用于实际存储,0x8000到0XFFFF地址用于内存的IO映射(实际上只有3个地址单元被使用)。当微处理器重置指令寄存器(IP)为0x0200,因此通常一个程序会被装载到这个位置执行。0x0000到0x00FF地址被保留用于中断向量和其他操作系统代码,而且实存最后的960个单位被用作缓冲区。

微处理器包括以下的32位寄存器:

l  8个通用寄存器,可以用作存储数据或地址。记作R0,R1,…R7。

l  1个指令寄存器(IR),用于保存当前正在被执行的指令。

l  1个状态寄存器(SR),包含CPU状态信息。0位被用作整形数溢出(OF),位1被用作中断屏蔽(IM),位2被用作启动中断计时器(TI)。

l  3个常量寄存器,记作ONE,ZERO和MONE。它们分别包含常数1,0和-1。

微处理器包括以下的16位寄存器:

l  1个栈指针(SP),指向栈顶,用于方法的调用和返回,当微处理器被重置时SP被设定到0x7000。

l  1个程序计数器(PC),包含下一个要执行指令的地址。

注意指令寄存器不直接通过指令集访问,尽管指令的执行显然会影响到这个寄存器。

 

微处理器也包含一个控制单元,使CPU的数据按照一定顺序运行。微处理器有以下所示的执行周期:

             

 do {
IR = mem[PC];
PC = PC + 1;
execute_instruction in IR;
check for interrupts;
} while(!halt);

 

rPeANUt指令集

       指令均为单字长(32位)。寄存器被标记为R0,R1,…R7,SP,SR,PC,ONE,ZERO,MONE并拥有半字节(4位)的机器码。这种半字节编码方式为:R0记为0x0,R1记为0x1,…,R7记为0x7,SP记为0x8,SR记为0x9,PC记为0xA,ONE记为0xB,ZERO记为0xC,MONE记为0xD。如果寄存器编码是0xE那么在指令最后16位的立即值会被使用。地址和值占用32位机器编码指令中的16位,值从16位扩展到32位。下表的指令集描述假定指令字已经被加载到指令寄存器,并且程序计数器已经指向下一个指令字。

指令名称

汇编指令

机器码

描述

add <RS1> <RS2> <RD>

0x1<RS1><RS2><RD><value>

RD <- R

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值