当前位置:   article > 正文

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

arm stur


经常会看到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作用一样,都是读取就,只不过使用寄存器不同

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/1022200
推荐阅读
相关标签
  

闽ICP备14008679号