当前位置: 首页 > news >正文

ARM《3》_学习c和汇编的混合编程

0、前言:

  • 现在探究一种新的学习方式,arm阶段知识量太大了,就以问题为导向,建立 基础概念库 针对某个问题,向其中添加内容;

基础概念库:

1、异常向量表

  • 异常发生后,CPU会跳转到异常模式下所对应的指令处执行异常模式下的指令。
  • 异常向量表:所有的CPU都有异常向量表,这是CPU设计时就设定好的,是硬件决定的。当异常发生时,CPU会自动跳转到异常向量表中对应的异常代码地址处执行代码,异常向量表是硬件向软件提供的处理异常的支持。
  • 异常向量表本质 上就是一段特定的内存地址空间,大小固定,ARM中每种异常对应该内存空间中的某个特定的内存地址(4Byte),正好是一条32位指令的长度,当异常发生时,CPU将PC(R15)强制设置为当前异常对应的固定内存地址。

2、ARM异常处理机制

  • 拷贝CPSR到SPSR;
  • 设置适当的CPSR位;
  • 保存返回地址LR,将PC设置为相应的异常向量表地址;
  • 返回时,从SPSR恢复CPSR,从LR恢复PC,恢复通用寄存器;

3、在汇编中调用c语言程序 & 《案例1》:

C 语言函数被汇编调用时,参数传递必须遵循统一规则(否则 C 函数无法正确识别参数),核心规则:

  • 前 4 个参数:通过寄存器 r0 ~ r3 传递(依次对应函数的第 1 ~ 4 个参数);
  • 超过 4 个的参数:通过栈(Stack) 传递(第 5 个及以后的参数,按顺序压入栈中);
  • 返回值:通过 r0 寄存器返回给调用者。

C 函数执行时必须依赖栈(Stack)完成 3 件事:

  • 保存函数调用的返回地址(lr寄存器,避免嵌套调用覆盖);
  • 存储局部变量(如果 C 函数有局部变量,会在栈上分配空间);
  • 传递超过 4 个的参数,用push指令把需要用到的存放参数的寄存器压栈;

4、在c语言程序中调用汇编 & 《案例2》:

ARM 处理器内核的寄存器介绍:

  • 在keil中如下图所示:
    在这里插入图片描述
  • 这些寄存器属于ARM 处理器的内核(CPU 核心),是处理器内部用于临时存储数据和控制执行流程的硬件单元。
  • 通用寄存器(R0~R12):用于临时存储数据、地址、函数参数、返回值等,是程序运行中最常使用的寄存器,支持算术运算、逻辑运算、数据传输等操作。R0 ~ R3:常用于 ** 函数参数传递(前 4 个参数)** 和返回值存储(R0);R4~R11:通用数据寄存器,可自由用于各种数据存;R12:常用于函数调用时的临时存储(
http://www.dtcms.com/a/524529.html

相关文章:

  • 硬件工程师11月实战项目-10G高速数字示波器开发
  • FPGA Debug:Vivado程序综合卡在了Run Synthesis
  • 免费网站建设推广服务什么样的公司愿意做网站
  • 世隆科技:无人船——开启水上智能作业新时代
  • 网站后台模板关联自己做的网站电商网站楼层 设计
  • 【北京迅为】iTOP-4412精英版使用手册-第六十八章 U-boot基础知识
  • 关于函数调用其实是函数指针+传参+解引用的一些思考
  • 奇缦科技珠海网站建设优化网站地图样本
  • 【设计模式】组合模式(Composite)
  • 【论文精读】Matten:融合 Mamba 与 Attention 的视频生成新范式
  • HTB Networked writeup(network-scripts提权)
  • 如何入门python机器学习?金融从业人员如何快速学习Python、机器学习?机器学习、数据科学如何进阶成为大神?
  • 网站开发技术交流中国国家培训网
  • 网站无法做301重定向网站查询域名入口
  • 国产数据库MongoDB兼容性技术分析与实践对比
  • 350做网站深圳零基础网站建设入门到精通视频教程
  • 冒泡排序代码实现详解
  • 金仓多模数据库平替MongoDB的电子证照国产化实践——从2TB数据迁移到1600+并发支撑
  • 【优先级队列(堆)】3.前 K 个⾼频单词 (medium)
  • 苏州建站公司 诚找苏州聚尚网络设计图案用什么软件
  • 数据结构——快速排序
  • IntelliJ IDEA新版下载、安装、创建项目及Maven配置的教程(附安装包等)
  • C++特性详解:extern、缺省参数、函数模板与名字空间
  • VUE+Electron从0开始搭建开发环境
  • MongoDB 平替新方案:金仓多模数据库驱动电子证照国产化落地
  • 项目(一)
  • SaaS多租户架构实践:字段隔离方案(共享数据库+共享Schema)
  • 企业网站网页设计的步骤房地产网站建设需求说明书
  • 中国专门做生鲜的网站著名品牌展厅设计
  • 开发避坑指南(66):IDEA 2025 Gradle构建安全协议警告:Maven仓库HTTPS切换或允许HTTP的配置方法