ARM汇编多寄存器寻址

2023-10-30

原文转自:http://hi.baidu.com/mugua/item/c43f37cc55a75d35ee4665e6

多寄存器和堆栈寻址的用法:多寄存器寻址:LDMIA,LDMIB,STMIA,STMIB,LDMDA,LDMDB,STMDA,STMDB;
堆栈寻址:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED;

弄清堆栈寻址的SP的变化:LDMFA,LDMFD,STMFA,STMFD,LDMEA,LDMED,STMEA,STMED;

IA: 每次传送后地址加4;
IB: 每次传送前地址加4;
DA: 每次传送后地址减4;
DB: 每次传送前地址减4;
FD: 满递减堆栈;
ED: 空递减堆栈;
FA: 满递增堆栈;
EA: 空递增堆栈。




1、多寄存器寻址:
LDMIA R0!,{R1-R4}  

                               ;R1<----[R0]
                               ;R2<----[R0+4]
                               ;R3<----[R0+8]
                               ;R4<----[R0+12]         

例如:

所有的示例指令执行前:
mem32[0x1000C] = 0x04
mem32[0x10008] = 0x03
mem32[0x10004] = 0x02
mem32[0x10000] = 0x01
r0 = 0x00010010
r1 = 0x00000000
r3 = 0x00000000
r4 = 0x00000000
1) ldmia r0!, {r1-r3} 2) ldmib r0!, {r1-r3}
执行后:                      执行后:
r0 = 0x0010001C    r0 = 0x0010001C
r1 = 0x01                   r1 = 0x02
r2 = 0x02                   r2 = 0x03
r3 = 0x03                   r3 = 0x04


2、堆栈寻址:
STMFD入栈指令,相当于STMDB
STMFD SP!,{R2-R4}                            ;[SP-4]<---R4
                                             ;[SP-8]<---R3 
                                             ;[SP-12]<---R2   
LDMFD出栈指令,相当于LDMIA
LDMFD SP!,{R6-R8}                ;R6<----[SP]
                                 ;R7<----[SP+4]
                                 ;R8<----[SP+8]


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ARM汇编多寄存器寻址 的相关文章

  • 函数调用约定(整理稿)

    函数调用约定 整理稿 Function calling convention 在C语言中 假设我们有这样的一个函数 int function int a int b 调用时只要用result function 1 2 这样的方式就可以使用这
  • 安天逆向教程——常用汇编语句

    一 汇编基础 二 条件分支 反汇编时更多关注这些条件分支 如果看懂这些条件分支 会对程序的大体逻辑有一个整体的了解 至于程序里面的细节 有时会省略掉 往往关键的跳转理解了甚至进行一点点的改动 就会使得程序发生翻天覆地的变化 三 栈和函数调用
  • 2.9-2.12段寄存器和cs:ip

    段寄存器有四类 cs ds ss es 其中 cs是代码寄存器 它指向的代码段是一组地址连续 起始地址为16的倍数的内存单元 这个代码段可以存储长度为N N lt 64KB 的一组代码 而与之相关联的是IP 指令指针寄存器 步骤如下 1 c
  • 王爽汇编语言课程设计1

    一 实验要求 在屏幕输出实验七中的数据 二 设计思路 1 将实验七的程序编写成一个子过程finishing 在主程序中调用 可以获得实验七种指定格式的table段数据 设置es bx指向table段中第一行 2 创建一个数据缓存区buffe
  • win32汇编基础概念

    一 关于寄存器 寄存器有EAX EBX ECX EDX EDI ESI ESP EBP等 似乎IP也是寄存器 但只有在CALL RET在中会默认使用它 其它情况很少使用到 暂时可以不用理会 EAX是WIN32 API 默认的返回值存放处 E
  • X64处理器架构

    X64处理器架构 翻译的windbg帮助文档 X64处理器架构 X64 架构是一个向后兼容的扩展的 x86 提供了和 x86 相同的 32 位模式和一个新的 64 位模式 术语 x64 包括 AMD 64 和 Intel64 他们的指令集基
  • 探讨STOS指令

    转载在http hi baidu com darks00n blog item 4c019ec42ad0cdcad00060b1 html 下面是一段win32 console程序 Debug版 的反汇编代码 很程式化的东西 本文不讨论这段
  • arm汇编lr pc b bl ret指令函数调用和返回gif动图演示

    文章目录 pc 寄存器 lr寄存器 x30 ret返回指令 bl 跳转指令 带返回 b 跳转 不带返回 pc 寄存器 pc保存着当前指令执行的地址 相当于win32汇编里的eip寄存器 lr寄存器 x30 lr存储函数的返回地址 每次遇到r
  • ARM 汇编基础知识

    1 为什么学习汇编 我们在进行嵌入式 Linux 开发的时候是绝对要掌握基本的 ARM 汇编 因为 Cortex A 芯片一 上电 SP 指针还没初始化 C 环境还没准备好 所以肯定不能运行 C 代码 必须先用汇编语言设置好 C 环境 比如
  • 为什么每个程序执行都有内核地址空间和程序地址空间?

    为什么每个用户态的程序映射到虚拟地址空间 都需要有内核地址空间和程序地址空间呢 因为程序地址空间最终都会调用系统调用 也就是内核的东东 所以每个程序要想执行 就必须有内核地址空间 也必须有程序地址空间 所用的application程序要想使
  • C语言与汇编——宏定义,头文件重复包含,内存申请和释放

    c文件 gt 替换 gt 编译 gt 链接 gt exe文件 typedef 只能给变量类型起别名 而 define可以给任何东西起别名 头文件重复包含问题 pragma once也能避免同一个头文件被包含 include 多次 一般由编译
  • ARM中的程序状态寄存器(CPSR)

    31 30 29 28 27 8 7 6 5 4 3 2 1 0 N Z C V 保留 I F T M4 M3 M2 M1 M0 N Negative Less Than I IRQ disable Z Zero F FIQ disable
  • 汇编小作业(3) 十进制数的平方根

    用子程序结构编程 从键盘输入一个十进制数 对其开平方后分别将其平方根和余数以十进制数的形式显示 DATA SEGMENT SUM DW 2 DUP BUF DB 7 DUP DATA ENDS stack segment 定义栈段 保存di
  • x86-64 汇编基础 ---- 记读 《CS: APP》

    x86 64 汇编基础 记读 CS APP 通常情况下 使用现代的优化编译器产生的代码至少与一个熟练的汇编语言程序员手工编写的代码一样有效 1 看懂汇编码 1 汇编码的格式 ATT格式 这是GCC OBJDUMP和其它一些工具的常用格式 由
  • [荐]硕博经验——科研论文阅读与写作实战技巧

    又转自西电好网 http bbs xdnice com b99t378538 htm硕博经验 转来的 早知道就好了 少走很多弯路啊 该文从 举止优雅的猪 那里看见的 感觉很不错 不过我感觉到了博士才知道这些似乎有点晚了 或者是有不少人也不会
  • 汇编语言+IDA安装问题解决汇总

    利用汇编语言计算机和人类链接更为便捷如下图所示 寄存器 简单讲就是CPU可以存储数据的器件 一个CPU可以有多个寄存器 AX BX是两个不同的寄存器 16位处理器有14个寄存器 AX BX CX DX SI DI SP BP IP CS S
  • 常见汇编指令整理

    本文会整理在逆向中常见的指令汇总 目录 汇编符号 汇编指令的组成 mov movzx lea xchg 加法指令 减法指令 带进位加法 带进位减法 自增自减 乘法运算 除法运算 and or xor not shl shr 逻辑指令 字符串
  • BFD库

    BFD库 2011 01 16 11 16 22 分类 LINUX 什么是 BFD Binary format descriptor 即二进制文件格式描述符 它是连接工具 ld 和二进制文件操作工具 bin util 实现对于目标文件操作的
  • 《深入理解计算机系统》实验四Architecture Lab

    前言 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻请看 深入理解计算机系统 实验四Architecture Lab下载和官方文档机翻 我觉得这个文档对整个实验很有帮助 如果你的Y86 64环境还没安装好可以看
  • C语言深入学习--checklist4:宏、枚举、switch

    宏 1 宏的本质是什么 函数 语句 类型定义 或者其它 预编译器的文本替换 1 你知道语言设计者为什么设计宏吗 这些原因目前是否成立 在 C程序中 可以用宏代码提高执行效率 宏代码本身不是函数 但使用起来象函数 预处理器用复制宏代码的方式代

随机推荐

  • 第四届蓝桥杯(2013)-省赛题解_C/C++__大学A组

    目录 感悟总结 一 高斯日记 填空题 二 排它平方数 填空题 三 振兴中华 填空题 四 颠倒的价牌 填空题 五 前缀判断 代码补充 六 逆波兰表达式 代码补充 七 错误票据 八 买不到的数目 九 剪格子 十 大臣的旅费 感悟总结 蓝桥杯有大
  • cpu.h-栈的宏定义-满减栈

    常常两两相对的东西 整一起后有点记不住 就写下来 cpu h中有宏定义使用哪种栈 define OS STK GROWTH 1 Stack grows from HIGH to LOW memory on ARM 栈的四种 满栈 满 字表示
  • 错误解决:Clipping input data to the valid range for imshow with RGB data ([0..1] for floats or [0..255]

    今天又是快乐改错误的经历 在做k means进行图片压缩的实战项目中 我遇到了这样一个pyplot显示图像报错问题 Clipping input data to the valid range for imshow with RGB dat
  • Python中的字典用法

    文章目录 一 字典的定义 二 字典的创建 2 1 一个简单的字典 2 2 字典的嵌套 三 字典的特性 3 1 字典不支持切片 3 2 成员操作符 3 3 for循环遍历 四 字典元素的增加 五 字典元素的删除 六 字典元素的查看 七 字典的
  • 制作最简单的Git Server

    网上看到的Git Server部署方法一大堆 一会儿搞什么SSH 还要弄私钥公钥 复杂无比 其实有一个办法非常简单 如果是在公司内网环境下 需要将某台机器部署为Git Server 我们称该机器为服务器 假设IP为192 168 0 111
  • uni-app前端用户登录实现

    从0开始开发SpringBoot vue前后端分离项目 后端 Springboot简单实现用户登录操作 文章目录 从0开始开发SpringBoot vue前后端分离项目 后端 1 HBuildX uni app创建项目 一 项目目录结构 二
  • LinearLayer

    线性层的作用 类似于这边荧光绿的两层 就是fully connected layer 将1 1 4096的向量 变成1 1 1000的向量 代码示例 import torch import torchvision from torch im
  • dwr 使用 callback 多个参数(间接方法)

    dwrInvokeDataClaimAction findSupplierByName payee callback function returnData bringOutSupplierCallback returnData arg1
  • 【Redis】List类型和底层原理

    文章目录 List类型 1 List介绍 1 1常用命令 2 List底层实现 3 ziplist剖析 3 1ziplist结构 3 2创建一个空的ziplist 3 3ziplist的元素节点结构 3 4ziplisqt的连锁更新 3 5
  • Java 集合(List与LinkedList)接口详解

    List接口 List接口的定义 List interface List extends Collection 通过观察List接口的定义发现其继承得是Collection接口 List Set Queue接口继承的都是Collection
  • [持续开源中]用2000元左右做水下机器人

    1 水下机器人功能 1 平稳的运动控制 2 高清视频 3 定深悬停 巡航 2 相关技术 2 1 PC上位机 1 C Winform MVC 现有 2 C MAUI MVVM Socket 开发中 2 2 下位机 水下机器人 2 2 1 So
  • 最长连续子序列的起始位置

    用结构体保存结果 注意的是最长连续子序列需要的是连续 所以dp的状态方程别写错了 include
  • inotify_init使用

    用于监控文件 目录的修改创建删除等操作 也可以配合epoll使用 include
  • Upload-Labs-Windows Pass-01

    题目 解题 步骤1 上传文件 上传一句话木马 编辑文件a php 内容为 直接上传的话 会提示错误 题目要求选择图片格式上传 文件名改为a jpg 内容为 然后通过burp suite来修改上传文件名字 步骤2 改文件名 把a jpg改为a
  • 组件库技术选型总结

    Monorepo Multirepo 架构 Multirepo指的是将模块分为多个仓库 每个团队都拥有自己的仓库 他们可以使用自己的构建流程 代码规范等 但是同时也会存在很多问题 比如模块中间如果存在相互依赖 就必须到目标仓库里进行bug修
  • android动态权限的源码解析

    android 动态权限 android权限的类型 在android9 0中定义了很多权限 如下
  • LeetCode-七进制数、最小高度二叉搜索树

    只是为了记录每天的练习 要好好加油啊呜呜呜现在的我还太拉了 思路很直接啊 就是转进制 数字转字符串 class Solution public string convertToBase7 int num if num 0 特殊情况 retu
  • HelloSpring---第一个spring项目

    1 Spring概述 1 1 简介 Spring 春天 gt 给软件行业带来了春天 2002年 Rod Jahnson首次推出了Spring框架雏形interface21框架 2004年3月24日 Spring框架以interface21框
  • websocket php连接数,swoole websocket协程服务端 因为客户端连接数量过多崩溃

    问题描述 websocket 携程风格的服务端 同时300多个客户端连接的时候 PHP Fatal error Uncaught Error Maximum function nesting level of 256 reached abo
  • ARM汇编多寄存器寻址

    原文转自 http hi baidu com mugua item c43f37cc55a75d35ee4665e6 多寄存器和堆栈寻址的用法 多寄存器寻址 LDMIA LDMIB STMIA STMIB LDMDA LDMDB STMDA