arm汇编-补充-画图记忆 LDM/STM系列指令

news2025/1/19 20:31:32

说明

原始文章系列
https://azeria-labs.com/writing-arm-assembly-part-1/

翻译-进作者的专栏可以翻到所有翻译
系列:https://zhuanlan.zhihu.com/p/109057983
系列:https://www.anquanke.com/post/id/86383

0x00 调试环境

使用arm架构的系统,只为了学习汇编,把其他复杂降低

下载 https://drive.google.com/drive/folders/107uMlL_DS8yD2TS_0yrHXBDnLOj44a8P 链接中的armv6_stretch.zip文件

修改start.sh文件为

#!/bin/bash

qemu-system-arm \
  -cpu arm1176 \
  -m 256 \
  -net user,hostfwd=tcp::2222-:22 -net nic \
  -kernel kernel-qemu-4.4.34-jessie \
  -M versatilepb \
  -no-reboot \
  -serial stdio \
  -append "root=/dev/sda2 panic=1 rootfstype=ext4 rw console=ttyAMA0" \
  -nographic -monitor /dev/null \
  -hda ./raspbian-stretch.img \

修改ssh.sh文件内容为

#!/bin/bash

SSH_PORT=2222

echo "[+] user 'pi' / password 'raspberry'"
ssh -4 -p ${SSH_PORT} pi@localhost"$@"

先运行start.sh,再运行ssh.sh,输入密码raspberry就能进入
在这里插入图片描述


拷贝宿主机中的start.bat文件到虚拟机中pi用户的家目录中(需要输入pi的密码raspberry

  • 在宿主机中执行
scp -P 2222 start.bat pi@127.0.0.1:~

把虚拟机中的pi用户家目录中的test.bat文件拷贝到宿主机中(需要输入pi的密码raspberry

  • 在宿主机中执行
scp -P 2222 pi@127.0.0.1:~/test.bat .

安装gdb、gcc,并安装gdb调试插件peda

0x01 忘掉啥从左到右,从右到左,就是整体平移

在这里插入图片描述

0x02 LDM/STM-IA/IB/DA/DB

-IA(之后增加)、-IB(之前增加)、-DA(之后减少)、-DB(之前减少)

  • i 是往地址增大的方向,整体平移放置
  • d 是往地址减小的方向,整体平移放置
  • A 就是正常的逻辑
  • B 跳过op1直接指向的内容,从下一个或上一个开始

在这里插入图片描述


在这里插入图片描述

0x03 LDM/STM-FA|FD|EA|ED

  • 栈地址的增长方向:
    • A:ARM将向高地址增长的栈称为递增栈( Acendant Stack)
    • D:将向低地址增长的栈称为递减栈(Descendent Stack)
  • 栈指针的指向位置:
    • F:ARM将栈指针指向栈顶元素位置的栈称为满栈(Full Stack)
    • E:将栈指针指向即将入栈的元素位置的栈称为空栈(Empty Stack)

D和A的含义:都是相对于入栈的增长方向来说的

在这里插入图片描述

F和E的含义:入栈和出栈时sp指向的地址的作用来说的

  • 对于入栈
    • Full:sp所指向的地址有内容了,不可以放东西
    • Empty: sp指向的是空的,可以放东西
  • 对于出栈
    • Full:sp指向的内容有内容,可以把里面的内容用于出栈
    • Empty: sp指向的是空的,不能用于出栈
      在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1330978.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

❀My学习Linux命令小记录之iperf❀

❀My学习Linux命令小记录之iperf❀ 目录 ❀My学习Linux命令小记录之iperf❀ ①功能说明: ②安装iperf: ③iperf的使用及参数介绍: ④注意事项: ⑤实例: iperf测试udp iperf测试tcp ①功能说明: i…

管理 Jenkins 详细指南

目录 系统配置 安全 状态信息 故障 排除 工具和操作 系统配置 系统,配置全局设置和路径,端口更改,下载地址等。 工具,配置工具、其位置和自动安装程序。 插件,添加、删除、禁用或启用可以扩展 Jenkins 功能的插…

Logback简介与配置详解

在开发和维护Spring Boot应用程序时,一个强大而灵活的日志框架是至关重要的。Spring Boot默认集成了Logback,一个高性能的Java日志框架。本文将介绍如何配置Logback以满足你的日志记录需求。 Logback简介 官方网址:https://logback.qos.ch/ …

【JMeter】JMeter控制RPS

一、前言 ​ RPS (Request Per Second)一般用来衡量服务端的吞吐量,相比于并发模式,更适合用来摸底服务端的性能。我们可以通过使用 JMeter 的常数吞吐量定时器来限制每个线程的RPS。对于RPS,我们可以把他理解为我们的TPS,我们就不…

2023年12月GESP Python三、四级编程题真题解析

三、2023年12月GESP Python三级编程题 【三级编程题1】 【试题名称】&#xff1a;小猫分鱼 【问题描述】 海滩上有一堆鱼&#xff0c;N只小猫来分。第一只小猫把这堆鱼平均分为N份&#xff0c;多了i<N条鱼&#xff0c;这只小猫把多的i条鱼扔入海中&#xff0c;拿走了一份…

DBA-MySql面试问题及答案-上

文章目录 1.什么是数据库?2.如何查看某个操作的语法?3.MySql的存储引擎有哪些?4.常用的2种存储引擎&#xff1f;6.可以针对表设置引擎吗&#xff1f;如何设置&#xff1f;6.选择合适的存储引擎&#xff1f;7.选择合适的数据类型8.char & varchar9.Mysql字符集10.如何选择…

Stable Diffusion 基本原理

1 Diffusion Model的运作过程 输入一张和我们所需结果图尺寸一致的噪声图像&#xff0c;通过Denoise模块逐步减少noise&#xff0c;最终生成我们需要的效果图。 图中Denoise模块虽然是同一个&#xff0c;但是它会根据不同step的输入图像和代表noise严重程度的参数选择denoise的…

【接口测试】Postman(三)-变量与集合

一、变量 ​ 变量这个概念相信大家都不陌生&#xff0c;因此在这里我们不介绍了。主要说一下在Postman中有哪几类变量&#xff0c;主要包括以下四类&#xff1a; Global&#xff08;全局&#xff09; Environment&#xff08;环境&#xff09; Local&#xff08;本地&#xf…

安装gnvm,nodejs,npm使用方法

安装gnvm,nodejs,npm使用方法 一、安装gnvm gnvm.exe下载地址&#xff1a; https://download.csdn.net/download/hsg77/88651752 http://ksria.com/gnvm/#download 二、配置gnvm环境变量 新建目录&#xff0c;如&#xff1a;d:/nodejs 并把gnvm.exe存储到此目录 并把d:/node…

【分布式技术专题】「授权认证体系」深度解析OAuth2.0协议的原理和流程框架实现指南(授权流程和模式)

深度解析OAuth2.0协议的原理和流程框架实现指南 背景介绍OAuth1.0协议访问令牌案例分析 OAuth2.0OAuth2.0与OAuth1.0 OAuth2.0协议体系的Roles角色OAuth定义了四个角色资源所有者资源服务器客户端授权服务器 传统的客户机-服务器身份验证模型的问题协议流程 认证授权类型授权码…

Python生成圣诞节词云-代码案例剖析【第17篇—python圣诞节系列】

文章目录 ❄️Python制作圣诞树词云-中文&#x1f42c;展示效果&#x1f338;代码&#x1f334;代码剖析 ❄️Python制作圣诞树词云-英文&#x1f42c;展示效果&#x1f338;代码&#x1f334;代码剖析 &#x1f385;圣诞节快乐&#xff01; ❄️Python制作圣诞树词云-中文 &a…

【编译原理--复习】

知识点整理 第一章 同时伴有表格管理、出错处理 1、词法分析 任务&#xff1a;对构成源程序的字符串进行扫描和分解&#xff0c;识别出单词(如标识符等)符号 输入&#xff1a;源程序 输出&#xff1a;单词符号序列 2、语法分析 任务&#xff1a;根据语言的语法规则对单词符号…

[管理者与领导者-129]:很多人对高情商的误解,工程师要扩展自己的情商吗?工程师如何扩展自己的情商?

目录 前言&#xff1a; 一、什么是高情商&#xff1f; 1.1 什么是高情商 1.2 情商的五大能力 1.3 高情商的层次 1.4 对高情商的误解? 二、工程师需要发展自己的高情商吗&#xff1f; 三、工程师如何扩展自己的情商&#xff1f; 四、什么样的“高情商”的管理者令人讨…

、写入Shellcode到注册表上线

其实本质就是将shellcode写入到注册表中&#xff0c;然后读取注册表中的shellcode&#xff0c;然后创建线程去执行shellcode。 如下图: 写入注册表shellcode 这里将shellcode写入到注册表中&#xff0c;在我们需要的时候再去读取然后执行。 这里用到如下两个Windows API函…

智能硬件(6)之通用引脚(GPIO)

小编带领大家学习的四大开源硬件和智能模块&#xff0c;他们之间是如何通信的&#xff0c;主控芯片是如何控制智能模块&#xff0c;做某些事情呢&#xff1f;有没有小朋友发起疑问呢&#xff1f; 这里&#xff0c;涉及到了特别重要的知识点&#xff0c;就是通用引脚&#xff0c…

MAC地址、IP地址、端口

1.MAC 地址 网卡是一块被设计用来允许计算机在计算机网络上进行通讯的计算机硬件&#xff0c;又称为网络适配器或网 络接口卡NIC 。其拥有 MAC 地址&#xff0c;属于 OSI 模型的第 2 层&#xff0c;它使得用户可以通过电缆或无线相互连接。每一个网卡都有一个被称为 MAC 地…

Pipelined-ADC设计二——结构指标及非理想因素(Part2)

接上文&#xff0c;本章将两个比较重要的非理想因素&#xff0c;因此各项指标制定。后续会对常见的非理想因素给出常见的解决方法&#xff0c;以及设计所采用的方法。 2.2.3. 比较器失调 在流水线 ADC 中&#xff0c;比较器的主要误差来源就是比较器失调&#xff0c;称为失调误…

Python入门知识点分享——(八)文件的open方法

学完了Python当中的数据类型&#xff0c;下一步我们来了解如何用Python语言打开文件并添加内容。 目录 file mode buffering encoding errors newline closefd opener 函数 打开文件需要用到open函数&#xff0c;完整的语法格式如下所示&#xff0c;为了演示方便&…

量化服务器 - 后台挂载运行

服务器 - 后台运行 pip3命令被kill 在正常的pip命令后面加上 -no-cache-dir tmux 使用教程 https://codeleading.com/article/40954761108/ 如果你希望在 tmux 中后台执行一个 Python 脚本&#xff0c;你可以按照以下步骤操作&#xff1a; 启动 tmux: tmux这将会创建一个新…

全方位掌握卷积神经网络:理解原理 优化实践应用

计算机视觉CV的发展 检测任务 分类与检索 超分辨率重构 医学任务 无人驾驶 整体网络架构 卷积层和激活函数&#xff08;ReLU&#xff09;的组合是网络的核心组成部分 激活函数(ReLU&#xff09; 引入非线性&#xff0c;增强网络的表达能力。 卷积层 负责特征提取 池化层…