ARM64汇编学习_2_寄存器、常用指令、堆栈平衡

1. 寄存器;

2. 常用指令;

3. 函数的堆栈;


        PS:学习ARM64汇编时、一定要用IPhone5S及以上的真机调试程序。模拟器为X86汇编。


1. 寄存器;

        1.1 通用寄存器:可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果;通用寄存器的长度取决于机器字长。

image

        1.2 程序计数器:程序计数器是计算机处理器中的寄存器,它包含当前正在执行的指令的地址(位置)。当每个指令被获取,程序计数器的存储地址加一。在每个指令被获取之后,程序计数器指向顺序中的下一个指令。当计算机重启或复位时,程序计数器通常恢复到0。

image

        1.3 堆栈指针:堆栈指针总是指向栈顶位置。一般堆栈的栈底不能动,所以数据入栈前要先修改堆栈指针,使它指向新的空余空间然后再把数据存进去,出栈的时候相反。堆栈指针,随时跟踪栈顶地址,按"先进后出"的原则存取数据。

                       栈 :是一种特殊的线性表,是一种只允许在表的一端进行插入或删除操作的线性表。表中允许进行插入、删除操作的一端称为栈顶。表的另一端称为栈底。栈顶的当前位置是动态的,对栈顶当前位置的标记称为栈顶指针。当栈中没有数据元素时,称之为空栈。栈的插入操作通常称为进栈或入栈,栈的删除操作通常称为退栈或出栈。

image

        1.4 链接寄存器:当调用一个函数时,返回地址被自动保存到链接寄存器,在函数返回时有效。这使得快速进入和返回“叶”函数(不调用其它函数的函数)成为可能。如果函数是分支的一部分(即函数中又调用另一个函数),则链接寄存器必须入栈。

image

        1.5 程序状态寄存器:

image
cpsr寄存器结构
cpsr寄存器标志位解释

2. 常用指令;

        2.1 mov:

image

        2.2 add

image

        2.3 sub

image

        2.4 cmp

image

        2.5 b

image

        2.6 bl

image

        2.7 条件域

image

        2.8 内存操作

image

3. 函数的堆栈;

        3.1 函数分类:

            · 叶子函数:不调用其他函数的函数称为叶子函数;

            · 非叶子函数: 调用其他函数的函数称为非叶子函数;

        3.2 叶子函数的堆栈平衡;

        3.3 非叶子函数的堆栈平衡;


(PS : 其中有部分章节是从前人的文章中搬运过来整理而成,这些文章里已经对部分知识点解释的很清楚明了了,我也没有更好的表达方式,所以站在巨人的肩膀上,我只是一个整理者加了部分自己的理解。)

你可能感兴趣的:(ARM64汇编学习_2_寄存器、常用指令、堆栈平衡)