让cpu运行程序(二)

简单汇编指令设计

用文字符号书写的计算机指令就是汇编指令。这种汇编指令遵照怎样的格式书写,才能够和我们要设计的机器指令一一对应起来?做为CPU 的设计者在设计指令系统的同时,必须要考虑好这方面的问题。考虑好机器指令的格式,进而要考虑好汇编指令如何与之对应。

  1. 如何设计机器指令格式?

指令格式是指令分析执行的基础,按照一定的指令格式编写的指令,才能够让CPU分析出是哪一条指令,这条指令要做什么动作,以及如何去动作。为了能够分析执行指令,一般CPU都要专门设置一个指令寄存器,这个寄存器要放置从程序存储器中取出来的指令,通过预先设计好的指令格式去分解指令,将不同的编码送往控制矩阵。控制矩阵会通过节拍、标志线和指令寄存器送来的信息,有条不紊地指挥CPU动作。

由于机器只可以表示一定长度的二进制数,所以计算机CPU的指令格式只能在定长二进制数上做文章。一个基本的想法是,让一定数量的二进制数表示指令名称,让剩下的另一部分表示操作对象。于是最简单的机器指令格式就是:指令名称 操作对象。

在机器内部,指令只能以二进制编码的形式存在,因而指令名称就是一个编码。指令编码又叫操作码。指令操作的对象也是二进制数,所以又叫操作数。指令名称是惟一的,所以比较简单地用二进制数编号就可以了。但操作对象确相对复杂,有数值,有存储器的地址,有寄存器等。好在我们这里的指令的操作对象并太多,规划起来还并不困难。图 3-4是我们规划的16位二进制数指令格式,我们设计的这两种指令格式,就能够将前面设计的全部指令表示出来。

上面一种指令格式可以定义访问存储器一类指令,这类指令包括程序结构转移类指令,算数运算类指令和逻辑运算指令。下面一种指令格式是数据传送或运算一类指令格式,这种格式可以将8位数送入某个编号的寄存器,或者让编号寄存器之间传递数据,还可以进行编号寄存器间的各种运算。如果CPU中寄存器很多,往往采取编码是形式,于是分辨这些寄存器就要用到编码的方法。使用这些寄存器一般就要用编码来指示,需要将寄存器的编码写在指令操作对象当中。如果寄存器的数量很少,一般都以特殊的名称标注,像累加器da、指令寄存器ir、地址寄存器mar、输出寄存器out、前端寄存器A和B等,它们在指令编码中都是隐含寄存器,不必在指令操作对象中指出来。寄存器编码的形式都出现在CPU使用多个通用寄存器的情况。例如,精简指令系统的CPU都会有多个通用寄存器。

  1. 设计自己的汇编指令

根据前面对CPU指令系统的功能和格式设想,我们将设计的汇编指令和机器指令在表 3-1中对照给出。机器指令只是给出了操作码,不好一般化地指出操作对象,而汇编指令就可以用符号代替操作码和操作对象。

  

时间: 2024-08-10 10:55:57

让cpu运行程序(二)的相关文章

让cpu运行程序(四)

如何编译汇编程序 这个汇编程序的编译对我们设计的CPU来说非常简单.按照我们设想的CPU中,程序存储器.数据存储器是分开的.因此,不用考虑程序和数据的混淆问题.此外,由于我们设想的指令系统是一条指令就占一个存储单元,所以标号的地址非常容易计算出来.如果我们确定了第一条指令存放的地址,那么从这条指令向后数数,就可以将标号确定下来. 对于变量在什么地方的问题,常常是一般作汇编程序设计的人较为迷惑的问题.产生迷惑的原因主要是我们自己不作变量地址分配.做为一个CPU 的设计者,不仅要对程序如何放入内存进

让cpu运行程序(一)

我们应当明确,按照自己的想法设计的CPU只是一个硬件,真正让CPU能够动作起来完成任务,那还要靠软件.所谓的软件就是用指令系统编写的程序,当然也要包括程序操作的数据对象.我们知道,电子计算机所能够表达信息的基本方式是二进制数,所以无论是数据还是指令,在CPU 内部都是以二进制数的形式存在的.我们直接通过二进制数与CPU这种机器交流,大多数人吃不消,即使是计算机专家,使用起来也相当费力.怎么办?用人们容易记忆的文字符号来表达CPU的指令,使用的数仍然用我们熟悉的十进制表示.这样就可以将CPU使用的

让cpu运行程序(三)

cpu的汇编程序设计 反映CPU功能的是它的指令系统,而指令系统设计得好不好,一般是反映在用这些指令编写的程序上.如果较多问题都能够用一个CPU的指令集编写的程序来处理,说明这个CPU的功能强大,反之就说明CPU的功能欠缺. 要检测我们设计的CPU是否达到了预期的目标,需要我们编写一定数量的汇编程序来对其进行测试.测试的时候,还必须将汇编程序转化成机器指令程序,不然CPU就无法识别.由此看来,学习计算机CPU设计制作,必须要学会汇编程序设计,还要能够将汇编程序翻译成机器指令程序.翻译汇编程序为机

玩转CPU运行曲线

Leaf 是不是从来没有想过看看cpu运行曲线啊骚年?顶多也就仅仅是看看cpu利用率,吓自己一跳后感觉关闭几个不该打开的程序~ 然而问题来了,微软公司要让你绘制cpu运行曲线啊!!不仅是固定的直线,还要绝对值函数,还有正弦!!我的天这游戏还能玩? Require 写一个程序,让用户来决定Windows任务管理器(Task Manager)的CPU占用率.程序越简越好,计算机语言不限.例如,可以实现下面三种情况: CPU的占用率固定在50%,为一条直线 CPI的占用率为一条直线,但是具体占用率由命

C#让程序以管理员身份运行程序

步骤:一: 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找到“安全性”选项 二:勾选“启用ClickOnce安全设置”, 三:这时,在项目下面会多出一个“app.manifest”的文件,选中它,并找到代码段<requestedExecutionLevel level="asInvoker" uiAccess="false" />,将其改为:<requestedExecutionLevel level="

【转】多核CPU运行模式

多核CPU运行模式主要有以下三种: •非对称多处理(Asymmetric multiprocessing,AMP)——每个CPU内核运行一个独立的操作系统或同一操作系统的独立实例(instantiation). •对称多处理(Symmetric multiprocessing,SMP)——一个操作系统的实例可以同时管理所有CPU内核,且应用并不绑定某一个内核. •混合多处理(Bound multiprocessing,BMP)——一个操作系统的实例可以同时管理所有CPU内核,但每个应用被锁定于某

Android中插件开发篇之----动态加载Activity(免安装运行程序)

一.前言 又到周末了,时间过的很快,今天我们来看一下Android中插件开发篇的最后一篇文章的内容:动态加载Activity(免安装运行程序),在上一篇文章中说道了,如何动态加载资源(应用换肤原理解析),没看过的同学,可以转战: http://blog.csdn.NET/jiangwei0910410003/article/details/47679843 当然,今天说道的内容还这这篇文章有关系.关于动态加载Activity的内容,网上也是有很多文章介绍了.但是他们可能大部分都是介绍通过代理的方

操作系统篇-hello world(免系统运行程序)

  一.前言 今天起开始分享关于操作系统的相关知识,本人也是菜鸟一个,正处于学习阶段,这整个操作系统篇也是我边学习边总结的一些结果,希望能给正在学习或者有意向学习操作系统的童鞋带来帮助. 二.有关知识 在进入代码之前,先给大家普及一些硬件知识,如果你已经具备了这方面的知识,可以直接略过这部份. 1.计算机怎么启动操作系统的? 首先,我们思考一个问题,为什么一个硬盘安装系统之后打开计算机电源之后就能正常加载启动呢?这看起来似乎很智能,似乎计算机像活的一样会自动去硬盘中找系统代码并自行加载.其实不然

C# 管理员身份运行程序

在使用winform程序获取调用cmd命令提示符时,如果是win7以上的操作系统,会需要必须以管理员身份运行才会执行成功,否则无效果或提示错误. 比如在通过winform程序执行cmd命令时,某些情况下如果不是以管理员身份运行,则会提示命令无效. 或者通过winform程序执行Windows Service 服务时,也需要以管理员身份才能调用Service服务. 下面讲解一下如何使程序获取管理员权限来运行. 一: 在Visual Studio 中--解决方案资源管理器--右键项目名称--属性,找