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

Cortex-M 上编写汇编函数

ARM Cortex-M 系列单片机中使用汇编语言编写函数时,需要特别注意寄存器的使用、栈管理、调用约定以及与 C 语言的兼容性。以下是关键注意事项和示例说明:


1. 遵循 AAPCS 调用约定

ARM 定义了 AAPCS(ARM Architecture Procedure Call Standard),规定了函数调用时寄存器的使用规则:

  • 调用者保存(Caller-Saved)R0-R3, R12, LR
    • 调用函数前,如果这些寄存器的值需要保留,调用者负责保存它们。
  • 被调用者保存(Callee-Saved)R4-R11, SP
    • 如果被调函数修改了这些寄存器,被调函数必须在入口处保存它们,并在退出时恢复。
示例:函数入口/出口
my_function:
    PUSH {R4, R5, LR}   ; 保存被修改的寄存器(R4, R5)和 LR(如果需要嵌套调用)
    ...                 ; 函数逻辑(可使用 R0-R3 自由修改)
    P
http://www.dtcms.com/a/111278.html

相关文章:

  • 01-STM32(介绍、工具准备、新建工程)p1-4
  • 重要头文件下的函数
  • [Python学习日记-89] 并发编程之多进程 —— 共享数据、信号量、事件、进程池
  • 【nginx】Nginx的功能特性及常用功能
  • PostgreSQL:表分区与继承
  • OBS录制的一些日志
  • python如何把列表中所有字符变成小写
  • GATT(Generic Attribute Profile)是蓝牙低功耗(Bluetooth Low Energy,简称BLE)协议栈中的一个核心协议
  • 【蓝桥杯】算法笔记3
  • 函数栈帧的创建与销毁
  • 言语理解与表达
  • 实战交易策略 篇十四:江南神鹰捕捉热点和熊市生存交易策略
  • 专为 零基础初学者 设计的最简前端学习路线,聚焦核心内容,避免过度扩展,帮你快速入门并建立信心!
  • 第15周:注意力汇聚:Nadaraya-Watson 核回归
  • 生成 SSH Key 并配置 GitHub/GitLab 详细教程
  • 深入理解AOP:面向切面编程的核心概念与实战应用
  • ctfshow VIP题目限免 robots后台泄露
  • 规则引擎Drools
  • 【KMP】P10915 [蓝桥杯 2024 国 B] 最长回文前后缀|普及+
  • RHCSA Linux 系统 文件的查看、复制、移动、重命名
  • 阿里巴巴langengine二次开发大模型平台
  • 压测工具开发实战篇(二)——构建侧边栏以及设置图标字体
  • Linux(十二)信号
  • SQL注入重新学习
  • OpenEuler/CentOS一键部署OpenGauss数据库教程(脚本+视频)
  • openmv用了4个了,烧了2个,质量堪忧啊
  • 基于FPGA的特定序列检测器verilog实现,包含testbench和开发板硬件测试
  • 鸿蒙 ——选择相册图片保存到应用
  • 第11/100节:三点估算
  • Muduo网络库实现 [十五] - HttpContext模块