![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
ARM64架构
文章平均质量分 66
ARM64架构及相关的程序分析
Cc又菜又帅
这个作者很懒,什么都没留下…
展开
-
ARM64栈结构浅析
SP指针在进入函数的时候一次性偏移了64字节,之后再也没有移动过SP指针,所以答案是否定的,个人推测是编译的时候编译器先扫了一遍代码,如果有定义局部变量的地方就提到前面去,如果有依赖后面的变量(例如int e = b + c),不能直接确定其值的情况,编译器会拆分成多个指令。在编译阶段就已经确定了b的地址,运行的时候可以说和b这个名字再没关系,符号表保存的是函数等(动态链接可能有变量名?1、写程序的时候,有的编译器支持在代码块中间定义一个局部变量,那么SP指针会在定义的时候再进行偏移吗?原创 2023-05-08 01:07:06 · 391 阅读 · 0 评论 -
ARM64汇编指令
ARM64中栈空间以16字节(128bit)作为一个存储单元,而stp和ldp指令可以同时操作两个寄存器,所以出入栈一般用stp和ldp指令实现。调用ret指令会把lr寄存器的值放在PC寄存器里,从而跳转回下一条指令。ARM64有34个寄存器,包括31个通用寄存器、SP、PC、CPSR。放在寄存器lr(x30)中,再跳转到ffff000008dc566c。注意:PC寄存器的值不能直接改写,但可以用ret指令间接改写。负载将寄存器lr(x30)的值放入PC寄存器。用于寄存器和内存之间传数据。原创 2023-05-08 01:05:23 · 1684 阅读 · 0 评论