汇编(四)

image.png

栈(SP&FP寄存器)

  • 栈:是一种具有特殊的访问方式的存储空间(后进先出, Last In Out Firt,LIFO)


    image.png

SP和FP寄存器

  • sp寄存器在任意时刻会保存我们栈顶的地址.
  • fp寄存器也称为x29寄存器属于通用寄存器,但是在某些时刻我们利用它保存栈底的地址!()

注意:ARM64开始,取消32位的 LDM,STM,PUSH,POP指令! 取而代之的是ldr\ldp str\stp
ARM64里面 对栈的操作是16字节对齐的!!

关于内存读写指令

注意:读/写 数据是都是往高地址读/写

str(store register)指令

将数据从寄存器中读出来,存到内存中.

ldr(load register)指令

将数据从内存中读出来,存到寄存器中

此ldr 和 str 的变种ldp(pair) 和 stp(pair) 还可以操作2个寄存器.

堆栈操作练习

使用32个字节空间作为这段程序的栈空间,然后利用栈将x0和x1的值进行交换.

sub    sp, sp, #0x20    ;拉伸栈空间32个字节
stp    x0, x1, [sp, #0x10] ;sp往上加16个字节,存放x0 和 x1
ldp    x1, x0, [sp, #0x10] ;将sp偏移16个字节的值取出来,放入x1 和 x0

讲解视频

ARM汇编入门(一) — 进制本质
ARM汇编入门(二) — 寄存器&pc&bl指令
ARM汇编入门(三) — 寄存器&cpu补充
ARM汇编入门(四) — 栈SP&FP寄存器
ARM汇编入门(五) — bl&ret函数的调用与返回
ARM汇编入门(六) — 函数的参数和返回值
ARM汇编入门(七) — 函数的局部变量与嵌套调用
ARM汇编入门(八) — 状态寄存器
ARM汇编入门(九) — 内存分区全局变量和局部变量
ARM汇编入门(十) — 循环选择判断
待续…

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,589评论 8 114
  • 一. DS和[address] CPU要读写一个内存单元时,必须要给出这个内存单元的地址,在8086中,内存地址有...
    林大鹏阅读 494评论 0 0
  • DS和[address] CPU要读写一个内存单元时,必须要先给出这个内存单元的地址,在8086中,内存地址由段地...
    Stone_熊小叔阅读 319评论 0 0
  • DS和[address] CPU要读写一个内存单元时,必须要先给这个内存单元的地址,在8086中,内存地址由段地址...
    为自己丶拼个未来阅读 345评论 0 0
  • 冬日清晨,排着队等候地铁,耳朵里塞紧一副耳机,放着轻快节奏的音乐去驱赶让你昏昏欲睡的魔鬼。 自己平日听的外文歌较多...
    神闲游阅读 194评论 0 0