ARM汇编教程三

预备知识

1.关于ARM架构

ARM架构,过去称作高级精简指令集机器(英语:Advanced RISC Machine,更早称作Acorn精简指令集机器,AcornRISC Machine),是一个精简指令集(RISC)处理器架构家族,其广泛地使用在许多嵌入式系统设计。由于节能的特点,其在其他领域上也有很多作为。ARM处理器非常适用于移动通信领域,匹配其主要设计目标为低成本、高性能、低耗电的特性。另一方面,超级计算机消耗大量电能,ARM同样被视作更高效的选择。安谋控股开发此架构并授权其他公司使用,以供他们实现ARM的某一个架构,开发自主的系统单片机和系统模块(system-on-module,SoC)。

2.关于汇编语言

汇编语言(英语:assembly language)是一种用于电子计算机、微处理器、微控制器,或其他可编程器件的低级语言。在不同的设备中,汇编语言对应着不同的机器语言指令集。 一种汇编语言专用于某种计算机系统结构,而不像许多高级语言,可以在不同系统平台之间移植。

3.树莓派安装参考

link

实验目的

通过该实验了解ARM汇编基础语法,这是我们学习ARM下的漏洞利用程序编写的基础。

实验环境

服务器:Ubuntu IP地址:随机分配
测试文件请在实验机内下载使用:http://tools.hetianlab.com/tools/T052.zip
启动树莓派命令:

$ qemu-system-arm -kernel ~/qemu_vms/qemu-rpi-kernel/kernel-qemu-4.4.34-jessie -cpu arm1176 -m 256 -M versatilepb -serial stdio -append "root=/dev/sda2 rootfstype=ext4 rw" -hda ~/qemu_vms/rasbian.img -redir tcp:5022::22 -no-reboot

SSH连接树莓派:

$ ssh pi@127.0.0.1 -p 5022

pi账户密码raspberry。

实验步骤一

有时,一次性加载(或存储)多个值更有效率。因此,我们需要使用LDM(载入多个值)和STM(存储多个值)。这些指令基于起始地址的不同,有不同的形式。下面是我们在本节中将会使用的代码。我们将一步一步地完成每一个指令,代码在test5.s中。

.data
array_buff:
.word 0x00000000             /* array_buff[0] */
.word 0x00000000             /* array_buff[1] */
.word 0x00000000             /* array_buff[2]. This element hasa relative address of array_buff+8 */
.word 0x00000000             /* array_buff[3] */
.word 0x00000000             /* array_buff[4] */
.text
.global _start
_start:
adr r0, words+12             /* address of words[3] -> r0 */
ldr r1, array_buff_bridge    /* address of array_buff[0] -> r1 */
ldr r2, array_buff_bridge+4  /* address of array_buff[2] -> r2 */
ldm r0, {r4,r5}              /* words[3] -> r4 = 0x03;words[4] -> r5 = 0x04 */
stm r1, {r4,r5}              /* r4 -> array_buff[0] = 0x03;r5 -> array_buff[1] = 0x04 */
ldmia r0, {r4-r6}            /* words[3] -> r4 = 0x03,words[4] -> r5 = 0x04; words[5] -> r6 = 0x05; */
stmia r1, {r4-r6}            /* r4 -> array_buff[0] = 0x03;r5 -> array_buff[1] = 0x04; r6 -> ar
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值