mips常用函数

将参数压入栈中

%src即为要存储的参数。注意栈结构是自顶向下的

1
2
3
4
.macro push(%src)
sw %src, 0($sp)
subi $sp, $sp, 4
.end_macro

将参数弹出栈

1
2
3
4
.macro pop(%src)
addi $sp, $sp, 4
lw %src, 0($sp)
.end_macro

求二维数组的index

因为二维数组实质上是重新标号的一维数组,其在内存中也是顺序存储的,因此对于mips要算一维下标是多少。

  • 二维下标为 (i, j)
  • 二维数组的size(arr[0] = r)
  • %dis为要保存到的目标寄存器
1
2
3
4
5
6
.macro index(%i, %r, %j, %dis)
multu %i, %r
mflo %dis
add %dis, %dis, %j
sll %dis, %dis, 2
.end_macro
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
Runtime Display
  • Copyrights © 2023-2024 Lucas
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~

支付宝
微信