汇编作业二:堆栈操作(push,pop)以及arm数据处理指令 | 您所在的位置:网站首页 › pop指令是否影响内存中的值 › 汇编作业二:堆栈操作(push,pop)以及arm数据处理指令 |
堆栈操作
在数据结构的学习中我们已经栈是先进后出的,汇编实现方面其实是通过将寄存器中的值存储(STR)到memory中来达到push的效果,而pop则是从memory中加载(LDR)值放到寄存器中。 堆栈根据栈顶指针指向的空间是否放值(空/满),以及扩张方向(递增/递减)可分为4种类型:空递增(EA),空递减(ED),满递增(FA),满递减(FD)。ARM用的是FD类型。 FD: 满递减 [sp] POP x [sp] -> x sp++ POP R1 ;单寄存器pop POP {R1-R3} ;多寄存器pop 代码: 单步运行到前三条MOV指令结束: MOV{cond}{S} Rd, operand2 ; Rd R4: 感觉学汇编的时候更能理解机器的视角,对数据的处理主要是内存与寄存器之间的转移(加载/存储),以及在进行算数/逻辑运算的时候看到的都是二进制的01,比较指令其实也是在进行算术运算或逻辑运算。这些简单的运算加上堆栈操作,函数的效果就达到了。 |
CopyRight 2018-2019 实验室设备网 版权所有 |