arm汇编储存指令str stur和读取指令 ldr ldur的使用,对应xcode c++中的代码反汇编教程

22 篇文章 5 订阅
19 篇文章 0 订阅
本文主要介绍了ARM架构下str、stur、ldr和ldur指令的用途和用法。str与stur用于将寄存器中的数据存储到内存地址,而ldr和ldur则负责从内存读取数据到寄存器。通过具体的汇编代码示例,阐述了这些指令如何在C++代码中对应地实现变量赋值和读取全局及局部变量的操作。
摘要由CSDN通过智能技术生成


经常会看到xcode 返回变里面出现 stur 和 ldur之类的指令,网上资料不太多,今天做一下总结:

str 和 stur 存储指令

这是一对 存储指令,作用是把寄存器里的内容存储到右边地址中:用法格式如下:
str 寄存器,[内存地址]
stur 寄存器,[内存地址]
例如下面汇编代码
str w11, [x10, #0xa0]
stur w12, [x29, #-0x18]
从功能出发,这2条指令一般对应,存储数值,例如给变量赋值:

int a = 3;

c++中的一个局部变量的赋值对应下面汇编代码:

mov    w12, #0x3
stur   w12, [x29, #-0x18]

mov 先把3 赋值给寄存器w12,然后 stur存储指令把w12 寄存器里的内容写入内存地址 x29, #-0x18 里.

再看全局变量 int g_a = 0;

g_a = 10;
mov    w11, #0xa
str    w11, [x10, #0xa0]

mov 先把10=16进制0xa赋值给了 w11
str存储指令把w11里的内容写入 内存地址 x10, #0xa0 里面.

ldr 和 ldur 读取指令

接着上面的代码

int c1 = g_a;

因为上面 g_a 的内容已经被 str写入到地址:x10, #0xa0中,
下面 要把 g_a里的值赋值给c1,需要下面指令:

ldr    w12, [x10, #0xa0]
stur   w12, [x29, #-0x14]

ldr 把内存 x10, #0xa0 里的内容读到 w12中,
stur 把w12中的内容写入 x29, #-0x14 内存中, x29, #-0x14就是 变量c1的地址

ldur 跟ldr作用一样,都是读取就,只不过使用寄存器不同

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值