北大计算机组成原理笔记2.1为什么要有指令系统
设计自己的处理器 标题有点大,其实就是从零开始,探讨学习处理器是怎么被设计出来的思想。 问题来了,为什么会有那些不同架构的CPU,然后有不同配套的汇编语言? 计算机由两部分组成,软件和硬件(没有软件的计算机连废铁都不如,哈哈半导体)。 那么硬件工
设计自己的处理器
标题有点大,其实就是从零开始,探讨学习处理器是怎么被设计出来的思想。
问题来了,为什么会有那些不同架构的CPU,然后有不同配套的汇编语言?
计算机由两部分组成,软件和硬件(没有软件的计算机连废铁都不如,哈哈半导体)。
那么硬件工程师要和软件工程师共同沟通并开发我们想要的计算机,沟通需要一个标准,就像谍战人员的密码电报一样,你得“自己人懂自己人的语言”。硬件工程师和软件工程师达成一致,于是这个标准就是—— 指令系统。
起初为了便于人类记忆,于是就把相应指令尽可能的用人类语言的单词简单写法代替,ADD,JMP(jump为便于记忆写成了JMP)
实际上,计算机是不认识这些人类字符的。他只能识别两种逻辑——0和1.但是基于这两种逻辑表达形式0和1,利用不同的序列能够衍生出其他丰富的逻辑表达形式。比方说0001表示 ADD 0000表示LOAD等等。
下面是指令的格式,假定我们设计的计算机CPU的指令长度都是2byte(实际上x86就不是指令等长度的)
我们可以假定如下设计理念。
只要建立好这种对应的字符对应01组合的对应关系,我们就可以很方便的“翻译字符到01组合”。实际上这个过程是汇编语言编译之后得到机器代码。
任何事情真正弄明白都要知道来龙去脉,以上就回答了,blog开头提出的问题。为什么我们需要一套指令系统?
为了更好的协同合作!
----------------------------------------------------------------------------------------------------------------------------------------------
仅作个人笔记用,推荐有心人一起学习交流讨论北大在coursera出的《计算机组成原理》。陆老师讲的很好!
我打算把自己遇到的问题或学到的东东总结出来。仅做个人交流讨论用。
上一篇: PHP实现双向队列算法代码
下一篇: 修改Oracle 10g的字符集