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

Cortex-M​ 函数调用的入栈与出栈操作

ARM Cortex-M 系列单片机中,普通C函数调用的入栈(压栈)和出栈操作通常由编译器编译后生成的代码管理,而硬件仅负责部分关键操作。以下是详细分析:


1. 函数调用与返回的核心机制

(1) 硬件自动完成的部分
  • 返回地址的保存
    当通过 BL(Branch with Link)或 BLX 指令调用函数时,**硬件会自动将返回地址(即下一条指令的地址)保存到 LR(Link Register)**中。
    例如:

    BL my_function  ; 调用函数,硬件自动将返回地址存入 LR
    
  • 返回地址的恢复
    函数返回时,通过 BX LRMOV PC, LR 指令,硬件会跳转回 LR 中的地址继续执行。

(2) 软件管理的部分
  • 寄存器的保存与恢复
    C语言写的函数调用,如果被调用的函数需要修改某些寄存器(如 R4-R11),编译器生成的代码会
http://www.dtcms.com/a/112253.html

相关文章:

  • 【5】搭建k8s集群系列(二进制部署)之安装master节点组件(kube-controller-manager)
  • 盲盒小程序开发平台搭建:打造个性化、高互动性的娱乐消费新体验
  • 定长池的实现
  • 蓝桥杯 小明的背包1 小兰的神秘礼物 01背包问题 模板 C++
  • 财务税务域——企业税务系统设计
  • centos8上实现lvs集群负载均衡dr模式
  • 【学Rust写CAD】23 渐变效果(gradient_source.rs)
  • 【面试篇】Dubbo
  • NSSCTF [HGAME 2023 week1]simple_shellcode
  • 音视频入门基础:MPEG2-PS专题(8)——使用Wireshark分析GB28181的PS流
  • 第十二步:react
  • 如何用Python轻松实现快速复制或剪切文件列表中的所有文件呢?
  • 【架构艺术】Go大仓monorepo中使用wire做依赖注入的经验
  • PowerMonitor的使用步骤
  • 【jvm】GC评估指标
  • 面试手撕------智能指针
  • 操作系统、虚拟化技术与云原生及云原生AI简述
  • JavaScript智能对话机器人——企业知识库自动化
  • 使用HTML5和CSS3实现炫酷的3D立方体动画
  • 地球科学领域常用python库
  • 软件工程面试题(十九)
  • Redis高级技能进阶
  • 【GPT写代码】动作视频切截图研究器
  • MATLAB中plot函数的详细参数表
  • 数据结构:二叉树(三)·(重点)
  • 医疗信息系统的主要痛点分析
  • session临时文件包含
  • 【教学类-102-02】自制剪纸图案(留白边、沿线剪)02——Python+PS自动化添加虚线边框
  • ROS订阅相机图像识别颜色并发布识别信息
  • 【进收藏夹吃灰】Python基础学习指南