ra寄存器定位core
$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!.\n".text.globl main #necessary for the assembler main: jal messagejal messageli $v0,10syscall #exit the program gracefully message: la $a0,strli $v0,4syscall #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,10li $a1,21li $a3,31jal silly #Now the result of the function is is $v0. li $v0,10syscall silly: add $t0,$a0,$a1 sub $v0,$a3,$t0 jr $ra
ra寄存器定位core相关推荐
- log夹逼法定位core, 可能存在问题
以前经常用log夹逼法定位问题, 比如core dump, 但是, 最近在某情况下发现, 如果出现core, 那么core前的log不一定会打印, 这可能是log的缓存问题(没有core的话, lo ...
- 如何快速定位程序Core?
导读:程序core是指应用程序无法保持正常running状态而发生的崩溃行为.程序core时会生成相关的core-dump文件,是程序崩溃时程序状态的数据备份.core-dump文件中包含内存.处理器 ...
- 学会用core dump调试程序错误(转)
前言 最近在项目中遇到大型程序出现SIGSEGV ,一直不知道用core dump工具来调试程序,花了近一周的时间,才定位问题,老大很生气,后果很严重,呵呵,事后仔细学习了这块的知识,了解一点core ...
- 学会用core dump调试程序错误
最来在项目中遇到大型程序出现SIGSEGV ,一直不知道用core dump工具来调试程序,花了近一周的时间,才定位问题,老大很生气,后果很严重,呵呵,事后仔细学习了这块的知识,了解一点core du ...
- gdb core调试
原文链接 http://blog.163.com/lanka83/blog/static/32637615200801793020182/ http://blog.csdn.net/taina2008 ...
- gdb core 调试(ZZ)
gdb core 调试(ZZ) http://blog.163.com/lanka83/blog/static/32637615200801793020182/ http://blog.csdn.ne ...
- Linux Kernel 6.0 CXL Core Regs.c 详解
前言 CXL 是一个比较新的技术,所以我研究的内核源码是选了当前比较新的内核版本 linux 6.0.打算将内核关于 CXL 的驱动进行解析一遍,一步一步慢慢来. 在阅读之前,希望读者能有一定的 PC ...
- mips指令与寄存器详解
MIPS通用寄存器 MIPS有32个通用寄存器($0-$31),各寄存器的功能及汇编程序中使用约定如下: 下表描述32个通用寄存器的别名和用途 REGISTER NAME USAGE $0 $zero ...
- Core文件作用、设置及用法
原文:https://www.cnblogs.com/xiaodoujiaohome/p/6222895.html 1.Core文件简介 Core文件其实就是内存的映像,当程序崩溃时,存储内存的相应信 ...
最新文章
- 重大要素改变中的机会选择包括_财务人员专业胜任能力要素及框架
- 3的三个整数立方和有多少个解?全球40万台计算机助力,MIT研究登上PNAS
- 欧洲估值最高的5家人工智能创业公司
- XP,2003下使用route命令增加永久路由(静态路由)
- 第三篇 SpringBoot 2 x中使用JPA
- Linux下显示ip所属位置
- jzoj3854-分组【树状数组,线段树】
- debian命令乱码_Debian 9.5 解决中文显示乱码
- Interview Common Sample Codes
- php.exe占用资源过大,记录一次php占用系统资源过高的问题
- 从 JMM 透析 volatile 与 synchronized 原理
- 蓝牙通信-打开和关闭蓝牙设备
- Django项目实践3 - Django模型(view-数据库)
- CentOS 7服务
- BZOJ4152 AMPPZ2014 The Captain 【最短路】【贪心】*
- 数字电路与模拟电路区别
- 下载hibernate4的jar包
- 关于中英文等宽字体的设置
- uniapp canvas生成海报不显示问题
- Diligent宣布2021年现代治理100强公司名单
热门文章
- 各代iphone尺寸_历代16款iPhone厚度对比:最薄的竟是iPhone 6!
- 基于指数平滑模型与ARIMA模型在苹果股价的预测应用
- 使用云效构建部署项目
- DNS配置异常无法上网(明明有网,但是网页打不开了?)
- Android 10.0相关权限的变更(使用WiFi Direct必须打开定位)
- 四、字符编码:ascii、gbk、Unicode、utf-8
- PTA 6-10 二分查找
- uni微信小程序引入商圈快速积分插件
- 机器翻译 MXNet(使用含注意力机制的编码器—解码器,即 Encoder编码器-Decoder解码器框架 + Attention注意力机制)
- 【乐逍遥网站设计】网站建设如何让网站设计更加合理化?