本章核心是理解计算机如何通过指令(Instructions)执行任务。我们将以MIPS-32指令集为例,深入探讨计算机语言的方方面面。
第一部分:MIPS-32 概述
MIPS是一种精简指令集计算机(RISC),其设计哲学是力求硬件简单,从而提高执行效率。
-
指令的组成
- 任何一条计算机指令都由两部分构成:
- 操作码 (Opcode):指定要执行的操作,例如加法、减法。
- 操作数 (Operand):指定操作所需的数据来源或数据要存放的目标位置,通常是寄存器或内存地址。
- 在MIPS-32架构中,所有指令的长度都是固定的 32位。
- 任何一条计算机指令都由两部分构成:
-
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, $s2sub des, src1, src2:减法。des = src1 - src2。例如:sub $s0, $s1, $s2addi 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

最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



