博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基础汇编指令
阅读量:6860 次
发布时间:2019-06-26

本文共 841 字,大约阅读时间需要 2 分钟。

start:

mov  sp,  #4096

bl  c  main

 

halt

b  8

 

mov  ip,  sp

stmdb   sp!,  {fp,ip,lr,pc}

sub   fp,  ip  ,#4;  0x4

sub   sp,  sp,  #8  0x8

mov  r3,#1442840576  0x56000000

add  r3,  r3,  #80;  0x50

str  r3,  [fp,#-16

mov  r3,  #1442840576  0x56000000

add  r3,  r3,  #84 ;  0x54

str  r3,  [fp, #-20]

ldr  r2,  [fp, #-16]

mov  r3,  #256

str  r3,  [r2]

ldr  r2,  [fp,#-20]

mov  r3,  #0

str  r3,  [r2]

mov  r3,  #0

mov  r0,  r3

sub  sp,  fp,  #12

ldmia  sp,{fp,sp,pc}

 

 

解析:

  stmdb  sp!,{fp,ip,lr,pc}

db含义:decrement  before  先减,后存。

  sp' = sp -4 = 4092,如果布加感叹号,sp为原值,并不会被减。

  高编号寄存器存在高地址,4092到4095存放PC的值,sp' = sp - 4 = 4088.

              4088到4091存放lr寄存器的值

              4084到4087存放ip的值

              4080到4083存放fp的值。

stmdb最常用

 

ldmia  sp,  {fp,sp,pc}

  先读4080到4083的值 = 原来的fp的值  低地址对应低编号。

  

  

 

 

 

 

 

 

 

  

    

 

转载于:https://www.cnblogs.com/stm32f4/p/7609844.html

你可能感兴趣的文章
Getting Started
查看>>
《thinking in Java》第三章 控制程序流程
查看>>
node 模块 fs-extra
查看>>
《游戏引擎架构》笔记一
查看>>
pythoy-生成器
查看>>
Redis 分布式锁进化史
查看>>
Java 集合系列05之 LinkedList详细介绍(源码解析)和使用示例
查看>>
Codeforces Round #547 (Div. 3) D
查看>>
(转)如何修正DIV float之后导致的外部容器不能撑开的问题
查看>>
Python全栈开发day9
查看>>
算法笔记 --- Insertion Sort
查看>>
子父表
查看>>
CUDA npp运动检测模块性能测试
查看>>
前端单点登录(SSO)实现方法(二级域名与主域名)
查看>>
extjs客户端与ABP框架的服务端数据交互杂记
查看>>
kali linux fuzz工具集简述
查看>>
微信小程序云开发不完全指北
查看>>
《构建之法》阅读笔记二
查看>>
20165324 前四周总结反思
查看>>
11.11评价
查看>>