news 2026/7/15 1:44:44

跳转汇编指令解读

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
跳转汇编指令解读

__asm volatile (
"cpsid i\n" // ① 关闭全局中断(PRIMASK=1)
"ldr r0, =0xE000ED08\n" // ② R0 = VTOR 寄存器的地址(0xE000ED08)
"str %1, [r0]\n" // ③ 将 appBinStartAddr 写入 VTOR(重映射向量表)
"ldr r0, [%1]\n" // ④ 从 appBinStartAddr 处读取第一个字(即初始 MSP 值)
"msr msp, r0\n" // ⑤ 设置主堆栈指针(MSP)为上述值
"dsb\n" // ⑥ 数据同步屏障(确保之前的写操作完成)
"isb\n" // ⑦ 指令同步屏障(刷新流水线,确保新 VTOR 生效)
"bx %0\n" // ⑧ 跳转到 appStartAddr(复位处理函数地址)
:
: "r"(appStartAddr), "r"(appBinStartAddr) // 输入操作数
: "r0", "memory" // 被修改的寄存器和内存
);

appBinStartAddr:编译好的hex文件的起始地址

appStartAddr:appBinStartAddr地址+4,一般是reset_handler函数存放的地址

cpsid i, 关闭全局中断

"ldr r0, =0xE000ED08\n" ,将SCB->VTOR寄存器的地址赋值给R0

"str %1, [r0]\n", 将appBinStartAddr的地址赋值给SCB->VTOR 重新映射中断向量表。

"ldr r0, [%1]\n": 读取栈顶的指针

"msr msp, r0\n":将栈顶指针的数据赋值给msp。

dsb isb:data synchronization barraier,instruction synchronization barraier,一个是用于所有的内存访问完成,阻塞式的。一个是用于取指令的动作访问完成,阻塞式的

"bx %0\n":bx appStartAddr,直接调准到reset_handler地址

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/15 1:44:18

他山之石可以功玉系列(04): 基于 FPGA 的 LMK04828 时钟芯片自动化配置管理模块设计

摘要 针对高速数据采集系统中时钟芯片 LMK04828 的复杂寄存器配置需求,本文设计了一款纯硬件实现的自动化配置管理模块 clk_cfg_module。该模块采用“三状态机+参数化查找表”架构,集成了多任务硬线仲裁、关键寄存器写后回读校验与异常自锁、PLL 锁定状态实时锁存以及动态分频…

作者头像 李华
网站建设 2026/7/15 1:43:29

Lucene实战:从核心原理到高并发场景下的性能调优

1. Lucene核心原理解析Lucene之所以能成为最流行的全文检索引擎工具包,关键在于其精巧的底层设计。先从一个实际场景说起:假设我们要在100万篇技术文章中快速找到包含"分布式系统"的文档,传统数据库的LIKE查询可能需要几分钟&#…

作者头像 李华
网站建设 2026/7/15 1:43:17

TPS6594-Q1智能PMIC:有限状态机实现可靠电源时序管理

1. 项目概述:为什么我们需要一个“会思考”的电源?在嵌入式系统,尤其是汽车电子、工业控制这类对可靠性要求极高的领域,电源管理从来都不是简单的“通电”和“断电”。想象一下,你设计的系统里有一颗多核SoC、几片DDR内…

作者头像 李华
网站建设 2026/7/15 1:42:47

N皇后问题的遗传算法Python实战:从卡顿600到100皇后稳定收敛

1. 这不是教科书,而是一次真实的GA项目复盘:从Matlab到Python的N皇后实战手记你点开这篇文章,大概率不是为了背诵“遗传算法是模拟生物进化过程的优化方法”这种定义。你真正想搞懂的是:当一个真实问题摆在面前——比如让100个皇后…

作者头像 李华
网站建设 2026/7/15 1:42:01

python ldap search Python LDAP搜索,一招搞定域控信息!比BloodHound还快?

-ad 项目教程1. 项目介绍有关 -ad 的脚本, 是借助特定编写方式而成, 用于借助 LDAP 服务, 从域控制器迅速获取各类信息, 此脚本一般在取得有效的 AD 凭证当下随即启动, 适配于在多种情境处理进程里快速获取信息。主要功能依赖项2. 项目快速启动安装使用 pipx 安装pipx install …

作者头像 李华
网站建设 2026/7/15 1:41:52

reshape python 重塑Python!LSTM这招让长序列记忆暴涨,再不怕梯度消失

一种特殊类型的循环神经网络, 即长短期记忆网络, 也就是 Long Short-Term , LSTM, 它被设计用来解决传统 RNN 在处理长序列数据的时候所面临的梯度消失以及梯度爆炸问题, 进而能够有效地捕捉长期依赖关系。LSTM中心在于其内部记忆单元即Cell, 还有控制信息流动的门结构, 这结构…

作者头像 李华