ra寄存器定位core

摘要:
pc的值存储在$ra寄存器中。调用函数时,必须在跳转之前保存当前地址,以便稍后返回。Jal直接跳转指令并具有链接功能。指令的跳转地址在指令中。当发生跳转时,返回地址应存储在R31寄存器中。因此,当根据ra定位核心位置时,您可以通过直接在ra位置前面查找jal来找到当前正在执行的函数。

$ra寄存器中存入的是pc的值(程序运行处的地址),调用函数时,在跳转前,必须保存当前地址(pc的值),以便后来返回。jal $ra 保存后跳转,jr $ra,返回到跳转前,通过$ra保存进入上层栈地址。

jal
    直接跳转指令,并带有链接功能,指令的跳转地址在指令中,跳转发生时要把返回地址存放到R31寄存器(ra)中。
jr
    使用寄存器的跳转指令,跳转地址在寄存器中。

所以根据ra定位core位置时,可以直接在ra位置前找jal便可以找到当前正在执行的函数。

转自http://user.it.uu.se/~justin/Teaching/NewDarkSlides/lecture5.pdf

•  As in high level languages , when programming in assembly language you should split up your program into smaller functions, that you can reuse.

•  One of the key ideas with functions is that you can call them
from any where and return back to where you called the function from.

•  The MIPS processor has two instructions that enable you to call functions, jr and jal.
•  Jump and link.
                    jal  label
   Copies the address of the next instruction into the register $ra
(register 31) and then jumps to the address label.

•  jr  $register jumps to the address in $register most common use
                    jr  $ra

            .data
str:        .asciiz  "Hello  mum!.
"
            .text
            .globl  main  #necessary  for  the  assembler 
main:        jal  message
            jal  message
            li  $v0,10
            syscall    #exit  the  program  gracefully 
message:    la  $a0,str
            li  $v0,4
            syscall    #Magic  to  printhings  on  the  screen. 
            jr  $ra

•  There are many way of passing values to functions, but there is a convention that most programs on the MIPS follow.
•  $a0-$a3 (registers 4 to 7) arguments 1-4 of a function.

•  $v0-$v1 (registers 2 and 3) results of a function.

        li  $a0,10
        li  $a1,21
        li  $a3,31
        jal  silly  #Now  the  result  of  the  function  is  is  $v0. 
        li  $v0,10
        syscall
silly:  add  $t0,$a0,$a1 
        sub  $v0,$a3,$t0 
        jr  $ra

免责声明:文章转载自《ra寄存器定位core》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux上实现jmeter分布式压力测试(转)esp8266物联网开发四:MQTT再论部控下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

汇编语言——寄存器(内存访问 ds数据段寄存器)

在内存中字的存储 这段话的主要意思是:一个字=2B=16bit,CPU中是用两个内存单元储存一个字(假如获取0地址存放的字型数据,就是获取它的高位字节0+1位和低位字节0位的数据,数据由高地址位向低地址位读) 问题: (1)0地址单元中存放的字节型数据是多少?  #  20H(2)0地址字单元中存放的字型数据是多少?  # 4e20H(3)2地址字单元中...

arp报文格式解析

arp报文格式 arp报文总共42 bytes。其中以太网首部14 bytes,arp字段28字节 一、以太网首部 如下图中:目的mac地址和源mac地址各6 bytes,以太网帧类型2 bytes 二、arp字段 arp字段如下图:从上往下依次是:硬件类型、协议类型、硬件大小、协议大小、op位、发送者mac、发送者ip、目的mac、目的ip 硬件类...

S4 到 PO/PI proxy 配置手册

前提条件: 1,SLD的rfc地址已经被创建     在注册sap技术系统到PO/PI系统蓝图(SLD)时,到SLD的rfc地址会被自动创建.自动创建的rfc地址是SLD_NUC和SLD_UC. 确保这两个rfc地址是可用的. 关于sap技术系统的注册,参考:https://www.cnblogs.com/weixiaopeng/p/11864446.h...

如何为多个VLAN配置DHCP?

几乎每个连接到Internet的设备都需要一个IP地址。以前,数不清的IP地址是手动分配的,这会花费大量时间和精力。随着DHCP的出现,不再需要IT专家花费大量时间为连接到网络设备的每个设备提供IP。但是什么是DHCP?它如何工作以及如何为多个VLAN配置DHCP? 什么是DHCP? DHCP –动态主机配置协议是在TCP / IP网络上使用的网络管理协议...

mov offset和lea的区别

mov offset和lea的区别 原文地址:https://www.cnblogs.com/fanzi2009/archive/2011/11/29/2267725.html 全局变量取地址用mov offset 例如:mov     dword ptr [ebp-14h],offset ConsoleTest+0x94620(00494620) 局...

配置虚拟机的ip地址,dns地址以及hosts

静态ip地址 BOOTPROTO=static IPADDR=注意要和宿主机的ip前3部分保持一致,最后的地址进行修改即可 NETMASK=255.255.255.0--和宿主机保持一致 GATEWAY=网关要和宿主机保持一致 service network restart 重启网络 ip addr查看网路地址信息 配置DNS 检查NetManager的状...