计算机组成原理——2 指令:计算机的语言

本章核心是理解计算机如何通过指令(Instructions)执行任务。我们将以MIPS-32指令集为例,深入探讨计算机语言的方方面面。

第一部分:MIPS-32 概述

MIPS是一种精简指令集计算机(RISC),其设计哲学是力求硬件简单,从而提高执行效率。

  1. 指令的组成

    • 任何一条计算机指令都由两部分构成:
      • 操作码 (Opcode):指定要执行的操作,例如加法、减法。
      • 操作数 (Operand):指定操作所需的数据来源或数据要存放的目标位置,通常是寄存器或内存地址。
    • 在MIPS-32架构中,所有指令的长度都是固定的 32位
  2. MIPS 寄存器

    • MIPS拥有32个32位的通用寄存器,用于在CPU内部高速存取数据。运算指令的操作数必须来自寄存器或指令本身。
    • 常用寄存器约定
      • 保存寄存器 $s0 - $s7 (编号16-23):用于存放程序中的变量,在过程(函数)调用中需要被调用者保存其值。
      • 临时寄存器 $t0 - $t7 (编号8-15):用于存放计算过程中的临时或中间变量,过程调用时无需保存。
      • 零寄存器 $zero (编号0):其值永远是0。

第二部分:三类核心汇编指令

MIPS指令主要可以分为运算指令、数据传送指令和决策指令。

1. 运算指令

  • 算术运算

    • add des, src1, src2:加法。des = src1 + src2。例如:add $s0, $s1, $s2
    • sub des, src1, src2:减法。des = src1 - src2。例如:sub $s0, $s1, $s2
    • addi des, src1, i:加立即数。des = src1 + i (i是一个常数)。例如 i++ 可写为 addi $s0, $s0, 1。MIPS没有减立即数 subi 指令,因为立即数可以是负数,通过 addi 即可实现。
  • 逻辑运算

    • and, or, nor:按位进行与、或、或非运算。例如 and $t2, $t0, $t1
    • sll des, src, shamt:逻辑左移。将寄存器 src 的值左移 shamt 位,右边补0,存入 des。左移n位相当于乘以 2n2^n2
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱看烟花的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值