首页 > 其他分享 >arm用户态寄存器

arm用户态寄存器

时间:2023-08-28 14:44:47浏览次数:41  
标签:FP 函数 用户 PC 地址 寄存器 arm 指针

常用的arm用户态寄存器如上表所示,有r0~r15这16个寄存器

r0~r3:通常在函数传参时使用(从左到右的顺序,大于4个参数时使用栈来传递)和返回值(r0通常被用作返回值)。在函数内部 r0-r3 也可以用来存储局部变量。

r4~r8,r10,r11:通常用来保存局部变量。r11通常用来作为(FP)栈基地址(下面会对这些概念进行讲述)

r12:可能在函数调用时被链接器使用,在函数内部,也可以存储局部变量。

r13:是SP寄存器,就是当前函数的栈顶指针。

r14:是LR寄存器,存放当前函数的返回地址。

r15:是PC寄存器,存放当前指令的地址。

上面讲述的FP,SP,LR,PC寄存器,它寄存器里面的内容是地址,这点不要混淆。

 

内存中的栈帧结构

刚刚我们提到了FP,SP,LR,PC寄存器,现在我们来展开聊聊这几个寄存器。

PC指针:刚刚提到PC指针里面存放着当前指令的地址,因为在我们arm架构,传统上是五级流水线,简单描述就是取址,然后取完代码是二进制,对它进行译码,翻译成各个动作,然后cpu参与计算,最后返回。PC指针就存放着当前指令的地址,扮演的角色就是告诉cpu需要访问的地址,也对应五级流水线中的取址操作。

SP指针:在函数申请变量的时候,会有一个动态压栈的过程,栈的大小会随着变量申请而逐渐增长,SP指针就指向你动态压栈所处在的地址。

FP指针:当前函数的起始地址。在函数调用时,进入另一个函数接口,也会进入另一个栈帧结构,里面会保存调用者的的起始地址(FP),用于出现问题时回溯,同时也有当前函数的起始地址(FP)。

LR指针:函数调用时,调用者的下一条指令地址。用于函数调用完返回时,可以进入下一条指令。

标签:FP,函数,用户,PC,地址,寄存器,arm,指针
From: https://www.cnblogs.com/baiduboy/p/17662240.html

相关文章

  • myeclipse svn 修改用户名和密码
    由于在svn的界面中并没有为我们提供直接更换用户名密码的地方,所以一旦我们需要更换用户名的就需要自己想一些办法。   解决方案:在Eclipse使用SVN的过程中大多数人往往习惯把访问SVN的用户名密码自动保存起来以便下次自动使用,不要再次手工输入,但是有些时候需要变更密码或者用户......
  • 让用户访问Tomcat时强制跳转到Https方式
    让用户访问Tomcat时强制跳转到Https方式。首先配置Tomcat可以在Https下运行,相应的配置,请查看其它说明文档。http://www.iteye.com/topic/78274修改tomcat/conf/web.xml文件,在</welcome-file-list>下面加上如下语句<login-config><!--Authorizatio......
  • wml用户输入和提交的实现
    用户的输入input元素input元素是WML编程中处理用户交互活动的重要元素,它通过单独的<input/>标签进行定义,其语法格式如下:<inputname="variable"title="label"type="type"value="value"default="default"format="specifier"emptyok="fal......
  • pycharm中自定义函数补全
    在PyCharm中,你可以通过以下步骤实现这一目标:打开PyCharm,点击顶部菜单的"File"(文件)->"Settings"(设置)。在弹出的窗口中,选择"Editor"(编辑器)->"LiveTemplates"(代码模板)。在左侧的列表中,选择"Python"或者你希望的分类,然后点击右侧的"+"按钮,添加一个新的代码模板。......
  • Oracle数据库表空间和角色/用户 权限
    问题1.https://blog.csdn.net/weixin_42446705/article/details/1163377112.https://blog.csdn.net/wanghai__/article/details/47918793.https://www.iteye.com/blog/czmmiao-1304934这个特别好4.https://www.cnblogs.com/abeam/p/13439120.html5.https://blog.csdn.net/l......
  • HarmonyOS Codelab 优秀样例——购物应用,体验一次开发多端部署魅力
    一. 样例介绍本篇Codelab基于自适应布局和响应式布局,实现购物应用在手机、折叠屏、平板不同屏幕尺寸设备上按不同设计显示。通过三层工程结构组织代码,实现一次开发,多端部署 。手机运行效果如图所示:折叠屏运行效果图:平板运行效果图:相关概念● 一次开发,多端部署:一套代码......
  • 用户组
    用户组类似于角色,系统可以对又共性的用户进行统一管理。新增组groupadd组名删除组groupdel组名增加用户时直接加上组useradd-g用户组用户名修改用户的组usermod-g用户组用户名用户和组的相关文件/etc/passwd文件:用户的配置文件,记录用户的各种信息;每行的含......
  • 使用MySQL命令行新建用户并授予权限的方法
    MySQL命令行能否实现新建用户呢?答案无疑是肯定的。而且在使用使用MySQL命令行新建用户后,还可以为用户授予权限。首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。用户:phplamp用户数据库:phplampDB1.......
  • HarmonyOS/OpenHarmony(Stage模型)卡片开发应用上下文Context使用场景二
    3.创建其他应用或其他Module的Context基类Context提供创建其他应用或其他Module的Context的方法为createModuleContext(moduleName:string),创建其他应用或者其他Module的Context,从而通过该Context获取相应的资源信息(例如获取其他Module的获取应用开发路径信息)。调用createModuleCon......
  • Mac m2 pycharm ide 重置
    如果不小心pycharm信息设置修改了重新安装是没有效果的要不么重装系统,要不恢复设置,要么重置重置如下cd/Users/xxxx/Library/ApplicationSupport/JetBrains/PyCharm2023.2rm-rfPyCharm2023.2......