IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> c内部机制 -> 正文阅读

[C++知识库]c内部机制

7种模式, 32个寄存器
r0 - ?r7 : ? ?7种模式都是一样的
r8- r12 : ? 普通模式、 ?FIQ 下特有的 ?r8 - r12?
r13 - r14 : ? 每种下都有 ?, 每种模式都不一样
sp : ?每种模式下都有自己的栈, ?所以r13 每种模式下都有?
lr: ?比如从user 模式切换到fiq 模式,把user模式返回地址存的lr中, fiq执行完毕以后就可以直接回到user模式?
pc : 程序寄存器, 当前程序执行在哪里, 所以只有一个,一个国家只有一个皇帝 , pc 指向那条指令, cpu执行哪条 , ? 程序跑飞了, pc寄存器内容不对了?
cpsr: ?程序状态寄存器,存储cpu的状态
spsr: ?保存cpsr ?比如User模式下有cspr, ?在fiq下把user模式下的cpsr保存到fiq下的spsr ,返回的恢复User模式下状态

栈的集中概念;?
* 空栈: ? sp 指向空位 ,每次存入的时可以直接存入然后栈 指针移动一格 ; 取出的时需要首先移动一格才能取出 ? empty?
?* 满栈: ? sp 指向栈中最后一格数据, 每次存入需要移动栈指针一格在存入 ?取出的时候直接取出,在移动栈指针 ? full
? 增栈: ? ?指针移动时向地址增加方向移动 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? incrase?
? 减栈: ? ?指针移动时向地址减少方向移动 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? declare?
??
? 三面4中模式可以组合, ?
? arm是 减栈 、 空栈 ?, ?空减栈 , ?ed?

分析几条汇编指令:?

add ?r0,r1,#4 ? ?r0=r1+4?
sub ?r0,r1,r2 ? ?r0=r1-r2
bl : ?跳转到某一条指令,并且把返回地址保存 到 lr中,返回地址就是吓一跳指令的地址
ldm : ?从内存读取数据到 寄存器, m读内存,写入多个寄存器
stm : 把多个寄存器的值写入内存
ldmia : ?ia 就是个上面 的 increase after ?分配过后增加

例子:
stmdb sp!,{fb,ip,lr,pc} ? ? db : declare before ?减少在分配之前, 首先减后存?

假设: sp = 4096?
? - 首先减后存 ? ? ?4096-4 = 4092 ?4095-4092存储pc的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4091-4088存储ip的值 ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4087-4084存储lr的值
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 4083-4080存储fp的值
! 表示 sp = 4080 等于最终被修改的值。?

内存模型图:?


? 存储规则: 高编号寄存器,存储在高地址
? pc ?r15
? lr ?r14
? ip ?r12
? fp ?r11

参考

  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2022-01-28 11:42:41  更:2022-01-28 11:44:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 9:33:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码