MIPS体系结构--指令集

mips体系结构下的汇编指令

指令集是存储在CPU内部,对CPU运算进行指导和优化的硬程序。拥有这些指令集,CPU就可以更高效地运行。

Mips汇编语言的风格

汇编语言指令格式

[标签:] 操作符 [操作数] [#注释]
  • 标签: (可选)
  • 标记内存地址, 必须跟冒号
  • 通常在数据和代码段出现
  • 操作符
  • 定义操作 (比如 add, sub, 等)
  • 操作数
  • 指明操作需要的数据
  • 操作数可以是寄存器,内存变量或常数
  • 大多数指令有3个操作数
1
2
3
# this is a comment
entrypoint:         # that’s a label
add $1 , $2, $3  # (registers) $1 = $2 + $3

xxx:—— 定义代码的人口点和命名数据段的存储段

程序结构

汇编语言的程序结构,为数据声明+代码段+数据段(文件后缀为.s,或者.asm也行),数据声明在代码段之后(其实在其之前也没啥问题,也更符合高级程序设计的习惯)

数据声明

数据段以 .data为开始标志
声明变量后,即在主存(RAM)中分配空间。

1
2
3
4
5
6
7
Example:
var1:		
    .word	3	 # 声明一个 word 类型的变量 var1, 同时给其赋值为 3
array1:		
    .byte 	'a','b'	 # 声明一个存储2个字符的数组 array1,并赋值 'a', 'b'
array2:		
    .space	40	# 为变量 array2 分配 40字节(bytes)未使用的连续空间,当然,对于这个变量

代码段:

  • 代码段以 .text为开始标志
  • 其实就是各项指令操作
  • 程序入口为main:标志(这个都一样啦)
  • 程序结束标志(详见下文)

其他:

  • .data //数据段
  • .text //代码段
  • .globl //全局符号声明
  • .align 0 //关闭所有的自动对齐
  • .asciiz //字符串(带终止符)

寄存器

32个通用寄存器:
MIPS的寄存器约定,一种32个寄存器

0 zero: 总返回0
1 at: (汇编暂存寄存器)为汇编保留
2-3 v0、v1:存放子函数调用返回结果,还可用于表达式求值
4-7 a0 - a3:存放向子函数传递的参数
8-15 t0- t7:存放临时运算结果,在发生函数调用时不必保存它们的内容
24,25 t8-t9:
16-23 s0 - s7:存放局部变量,在发生函数调用时一般要保存它们的内容
26,27 k0, k1:为中断/陷入处理保留,你也可以改变
28 gp:全局指针
29 sp: 栈(stack)指针
30 s8/fp: 帧(frame)指针
31 ra:

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值