本文已收录到:MIPS汇编语言学习笔记 专题
- MIPS汇编语言学习笔记03:print HelloWorld
- MIPS汇编语言学习笔记04:print character
- MIPS汇编语言学习笔记05:print integer
- MIPS汇编语言学习笔记06:print a float
- MIPS汇编语言学习笔记07:print a double
- MIPS汇编语言学习笔记08:Adding Integers
- MIPS汇编语言学习笔记09:Subtracting Integers
- MIPS汇编语言学习笔记10:Multiplying Integers (mul方法)
- MIPS汇编语言学习笔记11:Multiplying Integers (mult方法)
- MIPS汇编语言学习笔记12:Multiplying Integers sll
- MIPS汇编语言学习笔记13:Dividing Integers part 1
- MIPS汇编语言学习笔记14:Dividing Integers part 2
- MIPS汇编语言学习笔记15:Introduction to Functions
- MIPS汇编语言学习笔记16:Function Arguments and Return Values
- MIPS汇编语言学习笔记17:将寄存器保存到堆栈
- MIPS汇编语言学习笔记18:函数嵌套调用、递归
- MIPS汇编语言学习笔记19:获取用户输入的整数
- MIPS汇编语言学习笔记20:获取用户输入的单精度浮点数
- MIPS汇编语言学习笔记21:获取用户输入的双精度浮点数
- MIPS汇编语言学习笔记22:获取用户输入的文本
- MIPS汇编语言学习笔记23:if 语句分支指令
- MIPS汇编语言学习笔记26:MIPS While 循环
- MIPS汇编语言学习笔记27:数组
- MIPS汇编语言学习笔记28:使用While循环打印数组
- MIPS汇编语言学习笔记29:数组初始化
- MIPS汇编语言学习笔记30:浮点数(小数)运算
- MIPS汇编语言学习笔记32:浮点数 与 If 语句
原视频课
https://www.bilibili.com/video/BV19J411y7pA?p=27
代码
space数据类型:#.space 12 代表给变量分配12个字节空间,即12字节。如果我们想存储三个整数,一个整数占用4字节,那么一共就需要4 x 3 = 12个字节空间。
.data Array: .space 12 # 一个整数4字节,共三个整数 .text main: # save to register addi $s0, $zero, 2 addi $s1, $zero, 4 addi $s2, $zero, 6 # register to memory addi $t0, $zero, 0 sw $s0, Array($t0) addi $t0, $t0, 4 sw $s1, Array($t0) addi $t0, $t0, 4 sw $s2, Array($t0)
讲解:
前几步都是常规操作,将立即数2 4 6分别存入CPU的s0 s1 s2寄存器中。
接下来执行sw指令,其中会被拆分为lui addu sw指令
- lui指令将Array的内存地址取出,放置在1号寄存器的高16位上,现在1号寄存器的值为0x10010000。
- 将1号寄存器与8号寄存器的值相加,存入到1 号寄存器当中。
- 将16号寄存器(即s0寄存器)中的值存入基地址(0x00000000)偏移0x10010000后的值为地址的内存中。
如图:
后面,我们将t0寄存器的值每次+4,就可以以4字节为刻度,循环挨个读取三个整数并存取到内存中了。
关于数组在内存中的存储可以参考这篇文章:https://gaozhiyuan.net/c/structure-name-and-first-address-of-the-structure.html
最终效果: