首页 > 其他分享 >gun cm4 启动指令梳理

gun cm4 启动指令梳理

时间:2023-04-30 22:55:04浏览次数:36  
标签:sp r2 r3 0x0 gun ldr cm4 梳理 pc

(gdb) disassemble
Dump of assembler code for function Reset_Handler:
0x08012090 <+0>: ldr.w sp, [pc, #52] ; 0x80120c8 <LoopFillZerobss+18>
0x08012094 <+4>: ldr r0, [pc, #52] ; (0x80120cc <LoopFillZerobss+22>)
0x08012096 <+6>: ldr r1, [pc, #56] ; (0x80120d0 <LoopFillZerobss+26>)
0x08012098 <+8>: ldr r2, [pc, #56] ; (0x80120d4 <LoopFillZerobss+30>)
0x0801209a <+10>: movs r3, #0
0x0801209c <+12>: b.n 0x80120a4 <Reset_Handler+20>
0x0801209e <+14>: ldr r4, [r2, r3]
0x080120a0 <+16>: str r4, [r0, r3]
0x080120a2 <+18>: adds r3, #4
0x080120a4 <+20>: adds r4, r0, r3
0x080120a6 <+22>: cmp r4, r1
0x080120a8 <+24>: bcc.n 0x801209e <Reset_Handler+14>
0x080120aa <+26>: ldr r2, [pc, #44] ; (0x80120d8 <LoopFillZerobss+34>)
0x080120ac <+28>: ldr r4, [pc, #44] ; (0x80120dc <LoopFillZerobss+38>)
0x080120ae <+30>: movs r3, #0
0x080120b0 <+32>: b.n 0x80120b6 <Reset_Handler+38>
0x080120b2 <+34>: str r3, [r2, #0]
0x080120b4 <+36>: adds r2, #4
0x080120b6 <+38>: cmp r2, r4
0x080120b8 <+40>: bcc.n 0x80120b2 <Reset_Handler+34>
=> 0x080120ba <+42>: bl 0x8000d04 <SystemInit> #带L的跳转指令需要保存返回值,不带的不需要;但这里不需要压栈
0x080120be <+46>: bl 0x800d750 <__libc_init_array>
0x080120c2 <+50>: bl 0x8001488 <main>
0x080120c6 <+54>: bx lr
End of assembler dump.

(gdb) si
SystemInit ()
at /home/lance/Disk2/code/stm32/stm32fx_boot/Project/f401kit/../../CMSIS/Device/ST/STM32F4xx/Source/Templates/system_stm32f4xx.c:371
371 {
(gdb) info registers
r0 0x20000000 536870912
r1 0x20000360 536871776
r2 0x20001764 536876900
r3 0x0 0
r4 0x20001764 536876900
r5 0x0 0
r6 0x0 0
r7 0x0 0
r8 0x0 0
r9 0x0 0
r10 0x0 0
r11 0x0 0
r12 0x0 0
sp 0x20010000 0x20010000
lr 0x80120bf 134291647 #这里的函数调用需要保存返回值
pc 0x8000d04 0x8000d04 <SystemInit>
xPSR 0x61000000 1627389952
fpscr 0x0 0
msp 0x20010000 0x20010000 #这里的函数调用不需要压栈,所以仍是满栈
psp 0x0 0x0
primask 0x0 0
basepri 0x0 0
faultmask 0x0 0
control 0x0 0

Dump of assembler code for function SystemInit:
=> 0x08000d04 <+0>: push {r7} ;将R7中的值压栈,即R7中的值在当前sp指向的地址空间
0x08000d06 <+2>: add r7, sp, #0
0x08000d08 <+4>: ldr r3, [pc, #24] ; (0x8000d24 <SystemInit+32>)
0x08000d0a <+6>: ldr.w r3, [r3, #136] ; 0x88
0x08000d0e <+10>: ldr r2, [pc, #20] ; (0x8000d24 <SystemInit+32>)
0x08000d10 <+12>: orr.w r3, r3, #15728640 ; 0xf00000
0x08000d14 <+16>: str.w r3, [r2, #136] ; 0x88
0x08000d18 <+20>: nop
0x08000d1a <+22>: mov sp, r7
0x08000d1c <+24>: ldr.w r7, [sp], #4 ;将当前sp指向的地址空间处的值取出传给R7,并且sp+=4;这样R7前后值未变,sp回到原始水位
0x08000d20 <+28>: bx lr
0x08000d22 <+30>: nop
0x08000d24 <+32>: ; <UNDEFINED> instruction: 0xed00e000
End of assembler dump.

 

标签:sp,r2,r3,0x0,gun,ldr,cm4,梳理,pc
From: https://www.cnblogs.com/lance9527/p/17365919.html

相关文章

  • 1.ORB-SLAM3论文重点导读及整体算法流程梳理
    摘要ORB-SLAM3是第一个能够执行纯视觉、视觉-惯导以及多地图的SLAM系统,可以在单目,双目以及RGB-D相机上使用针孔以及鱼眼模型。本文主要新颖之处在于基于特征的VIO紧耦合系统,该系统完全依赖于最大后验估计,即使在IMU初始化阶段也是如此。本系统在小型和大型、室内和室外环境中实时稳......
  • 1.ORB-SLAM3论文重点导读及整体算法流程梳理
    摘要ORB-SLAM3是第一个能够执行纯视觉、视觉-惯导以及多地图的SLAM系统,可以在单目,双目以及RGB-D相机上使用针孔以及鱼眼模型。本文主要新颖之处在于基于特征的VIO紧耦合系统,该系统完全依赖于最大后验估计,即使在IMU初始化阶段也是如此。本系统在小型和大型、室内和室外环境中实时......
  • 扎实打牢数据结构算法根基,从此不怕算法面试系列之008 week01 02-08 通过常见算法,对常
    1、线性查找法的复杂度publicstatic<E>intsearch(E[]data,Etarget){for(inti=0;i<data.length;i++)if(data[i].equals(target))returni;return-1;}很容易看出,这个算法的复杂度为O(n)。2、一个数组中的元素可以两两组成......
  • 指标梳理对成功实施BI项目有什么意义
    指标梳理体系在实施BI或数据分析系统项目很重要的一点是搭建业务指标体系,“指标体系”是指由一系列具有强弱关联的的单一指标所组成的一个有机整体,可以从各个维度客观的反映业务现状的总体或样本的特征。举个例子,就好比太阳系,他也是个体系,有恒星、行星、卫星等组成的整体。......
  • 干货 | 自动驾驶领域各大顶会顶刊集合梳理(附名单) 曼孚科技
    自动驾驶是近年来备受关注的热门领域之一,无论是Google、特斯拉、百度等知名企业,还是各大学术机构,都在积极探索自动驾驶的技术与应用。为了促进该领域的交流与发展,一些重要的顶级会议和期刊应运而生。这些国际学术会议与期刊不仅为自动驾驶技术的研究提供了平台,同时也为企业和机构......
  • skyWalking自动建表-逻辑梳理
    skyWalking自动建表-逻辑梳理使用skyWalking后,发现我们不需要创建表,启动skywalking会自动创建表,遂研究官方源码,感觉oap-server设计的自动建表功能很强大,并进行逻辑梳理,仅供参考源码地址:https://github.com/apache/skywalking.git架构图Agent(代理/探针):负责从应用中,无侵入式......
  • 自动驾驶领域各大顶会顶刊集合梳理
    自动驾驶是近年来备受关注的热门领域之一,无论是Google、特斯拉、百度等知名企业,还是各大学术机构,都在积极探索自动驾驶的技术与应用。为了促进该领域的交流与发展,一些重要的顶级会议和期刊应运而生。这些国际学术会议与期刊不仅为自动驾驶技术的研究提供了平台,同时也为企业和机构......
  • 重构之Divergent Change(发散式变化)&Shotgun Surgery (散弹式修改)
    重构之DivergentChange(发散式变化)&ShotgunSurgery(散弹式修改) 5.DivergentChange发散式变化描述:一个类被锚定了多个变化,当这些变化中的任意一个发生时,就必须对类进行修改。解释:一个类最好只因一种变化而被修改操作:你应该找出某特定原因而造成的所有变化,然后运用ExtractCl......
  • 堪比Topogun的神级拓扑插件RetopoFlow
    推荐:将 NSDT场景编辑器 加入你的3D开发工具链以往我们需要拓扑时一般都是借助到Topogun这个软件,今天来介绍下Blender中一个神级拓扑插件RetopoFlow,如果使用Blender工作流的小伙伴可以尝试使用下,至少不用导来导去那么麻烦了~1、使用教程Blender的插件安装基本都一样,这里就不多......
  • 关于同态加密的个人梳理
    传统加解密的弊端通常是成对存在的。如果密文被存储在了一个不可信的第三方中,PartyA对密文进行更新(密文下载,解密更新)过程需要添加两次通信(下载和上传)和两次计算开销(解密和加密计算)。如果可以直接在第三方上完成密文更新,就可以使得PartyA节省两次通信和两次计算开销。同......