mips体系结构--汇编

本文详细介绍了MIPS体系结构的汇编语言,包括程序结构、数据声明、操作指令、寄存器使用、数据类型以及内存空间的划分。重点讲解了MIPS的32个通用寄存器、寻址方式、系统调用和程序调用等,为理解MIPS架构提供了深入的洞察。
摘要由CSDN通过智能技术生成


指令集

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

Mips汇编语言的风格

汇编语言指令格式

[标签:] 操作符 [操作数] [#注释]

标签: (可选)

标记内存地址, 必须跟冒号

通常在数据和代码段出现

操作符

定义操作 (比如add, sub, 等)

操作数

指明操作需要的数据

操作数可以是寄存器,内存变量或常数

大多数指令有3个操作数

 

# this is acomment

entrypoint:         # that’s a label

add $1 , $2,$3  # (registers) $1 = $2 + $3

 

# —— 注释

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

 

程序结构

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

数据声明

  数据段以 .data为开始标志

  声明变量后,即在主存(RAM)中分配空间。

 

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  n   //n字节对齐

.asciiz      //字符串(带终止符)

.ent main    //main函数的开始

.type  main, @function //类型,指定为函数,但是也可以是变量

.set   noreorder       //设置属性为不优化代码

.set   reorder            //设置属性为优化代码

寄存器

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:       返回地址(用于过程调用

 

 

 

寄存器名约定与使用


*at:
这个寄存器被汇编的一些合成指令使用。如果你要显示的使用这个寄存器( 
如在异常处理程序中保存和恢复寄存器),有一个汇编directive可被用来禁止汇编 
器在directive之后再使用at寄存器(但是汇编的一些宏指令将因此不能再可用)


*v0, v1:
用来存放一个子程序(函数)的非浮点运算的结果或返回值。如果这两个寄 
存器不够存放需要返回的值,编译器将会通过内存来完成。 

*a0-a3:
用来传递子函数调用时前4个非浮点参数。在有些情况下,这是不是绝对的。请 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值