第 9 讲
计算机指令系统
数字逻辑与处理器
精选ppt
MIPS模拟器
MIPS汇编语言程序设计
一个排序算法的实例
计算机指令系统(2)
精选ppt
MIPS模拟器
SPIM
SPIM是主要的MIPS模拟器,能够t
main:
ori $s6,$0,0x1000
sll $s6,$s6,16
addiu $s4,$s6,0x0200 #$s4=n
addiu $s5,$s6,0x0204 #$s5=f
beq $0,$0, fact
result:
sw $s0,0($s5)
jr $ra #跳出main
2022/6/27
13
.text 0x00400100
fact:
addiu $s0,$0,1
lw $s1,0($s4) #$s0=n!
loop: mul $s0,$s1,$s0
addi $s1,$s1,-1
bnez $s1,loop #f=n!
j result
.data 0x10000200
n: .word 4
f: .word 0
精选ppt
.data 0x10000000
.word 4,0
.text
main:
ori $s6,$0,0x1000
sll $s6,$s6,16
addiu $s5,$s6,0x004
fact: addiu $s0,$0,1
lw $s1,0($s6)
loop: mul $s0,$s1,$s0
addi $s1,$s1,-1
bnez $s1,loop
sw $s0,0($s5)
jr $ra
14
#下列语句行是数据代码行
#定义了两个字型立即数4和0
#下列语句行是指令代码行
# 获得数据起始地址
# $s6=0x10000000
# $s5=0x10000004
# 循环计数器赋初值
# 把 word型数 4 载入 $s1
# $s0=n!, n=4
# 对应伪指令 subu $s1,$s1,1
#
# f=n!=24
#根据ra寄存器中的返回地址返回
能运行的版本(2)
精选ppt
编程指南
(1)变量
(2)分支
(3)数组
(4)过程调用
(5)阅读、改进程序
(6)设计实例
2022/6/27
15
单指令计算机
精选ppt
编程指南:(1)变量
变量存储在主存储器内(而不是寄存器内)
因为我们通常有很多的变量要存,不止32个
为了实现功能, 用LW 语句将变量加载到寄存器中, 对寄存器进行操作, 然后再把结果SW回去
对于比较长的操作(., loops):
让变量在寄存器中保留时间越长越好
LW and SW 只在一块代码开始和结束时使用
节省指令
also, 事实上LW and SW 比寄存器操作要慢得多得多!
由于一条指令只能采用两个输入,., (x+y)+(x-y)
2022/6/27
16
精选ppt
编程指南:(1)变量
2022/6/27
17
.data 0x10000000
.word 4,0
.text
main: addu $s3,$ra,$0
ori $s6,$0,0x1000
sll $s6,$s6,16
addiu $s5,$s6,4
fact: addiu $s0,$0,1
lw $s1,0($s6)
loop: mul $s0,$s1,$s0
addi $s1,$s1,-1
bnez $s1,loop
sw $s0,0($s5)
jr $ra
#s1 get 4
#s0 hold result
#return result in s0
lui $s6, 0x1000
在程序起始处保存ra是一种习惯,目的是避免在程序中有jal指令修改了ra,我们跳不回去了,本程序中没有用可删除以节省寄存器和指令数。
精选ppt
编程指南:(2)分支
在符号汇编语句中,分支语句的目标位置是用绝对地址方式写的
., beq $0,$0,fact means PC 0x00400100
不过在实现中,要用相对于PC的地址来定义
.
《计算机指令系统》 来自淘豆网m.daumloan.com转载请标明出处.