arm汇编储存指令str stur和读取指令 ldr ldur的使用,对应xcode c++中的代码反汇编教程
目录str 和 stur 存储指令ldr 和 ldur 读取指令经常会看到xcode 返回变里面出现 stur 和 ldur之类的指令,网上资料不太多,今天做一下总结:str 和 stur 存储指令这是一对 存储指令,作用是把寄存器里的内容存储到右边地址中:用法格式如下:str 寄存器,[内存地址]stur 寄存器,[内存地址]例如下面汇编代码strw11, [x10, #0xa0]sturw12
经常会看到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作用一样,都是读取就,只不过使用寄存器不同
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)