计算机功能youycpu,【图片】大家整天都在玩贴吧,,看看电脑cpu是怎么做的。。。很简单的【凤翔吧】_百度贴吧...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

前面说过,我们的CPU是8-bit的,也就是说它最多只能支持2^8=256个内存地址。我们的CPU内部将会有四个通用寄存器(General Purpose Register)R0~R3,一个PC寄存器(Program Counter Register),每个寄存器容量为8 bit。这个CPU不支持中断,意味着它不接受键盘和鼠标的输入,只会从内存里读取并执行指令。另外,CPU内部还有两个特殊的比特位,N和Z。如果某个运算的结果是负数,那么N就会被设定为1;如果某个运算结果为零,那么Z就被设定为1。我们将会在跳转指令里用到这两个比特位。

该CPU可以执行10种指令:

1. LOAD R1 (R2)

实现方法:

TMP = MEM[R2]

R1 = TMP

PC = PC + 1

这条指令是把内存地址R2处的数据读出来,然后放进寄存器R1里。接着PC寄存器加一为下一条指令做准备。看出来了吗?下面将不再有这种文字描述,全部使用简写。

2. STORE R1 (R2)

实现方法:

MEM[R2] = R1

PC = PC + 1

3. ADD R1 R2 [加法运算]

实现方法:

TMP = R1 + R2

R1 = TMP

IF (TMP == 0) Z = 1; ELSE Z = 0;

IF (TMP < 0) N = 1; ELSE N = 0;

PC = PC + 1

4. SUB R1 R2 [减法运算]

实现方法:

TMP = R1 - R2

R1 = TMP

IF (TMP == 0) Z = 1; ELSE Z = 0;

IF (TMP < 0) N = 1; ELSE N = 0;

PC = PC + 1

5. NAND R1 R2 [NAND逻辑运算]

实现方法:

TMP = R1 NAND R2

R1 = TMP

IF (TMP == 0) Z = 1; ELSE Z = 0;

IF (TMP < 0) N = 1; ELSE N = 0;

PC = PC + 1

6. ORI IMM5 [OR逻辑运算]

实现方法:

TMP = R1 OR IMM5, IMM5是一个5-bit的二进制数

R1 = TMP

IF (TMP == 0) Z = 1; ELSE Z = 0;

IF (TMP < 0) N = 1; ELSE N = 0;

PC = PC + 1

7. SHIFT L/R R1 IMM2 [移位运算]

实现方法:

IF (L) THEN TMP = R1 << IMM2

ELSE TMP = R1 >> IMM2

R1 = TMP

IF (TMP == 0) Z = 1; ELSE Z = 0;

IF (TMP < 0) N = 1; ELSE N = 0;

PC = PC + 1

8. BZ IMM4 [如果Z=1,就跳过IMM4个指令]

实现方法:

IF (Z == 1) PC = PC + 1 + (SIGN-EXTEND8(IMM4))

ELSE PC = PC + 1

9. BNZ IMM4 [跟上一条指令相反]

实现方法:

IF (Z == 0) PC = PC + 1 + (SIGN-EXTEND8(IMM4))

ELSE PC = PC + 1

10. BPZ IMM4 [若N = 0,就跳过IMM4个指令]

实现方法:

IF (N == 0) PC = PC + 1 + (SIGN-EXTEND8(IMM4))

ELSE PC = PC + 1

这些描述都比较抽象,做拼装的时候这些东西应该会表现得更具体些。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值