为了账号安全,请及时绑定邮箱和手机立即绑定

关于汇编指令,PUSH(入栈指令) 这是什么意思?

关于汇编指令,PUSH(入栈指令) 这是什么意思?

慕村9548890 2022-02-08 07:03:16
汇编指令。PUSH(入栈指令) 这是神马意思? 什么是入栈 简单的解释一下
查看完整描述

2 回答

?
倚天杖

TA贡献1828条经验 获得超3个赞

不同MCU的堆栈在使用细节上有所区别,不过意思都差不多,暂时以X86为例。
X86堆栈就是一段程序初始化时指定的内存空间,用来暂存需要保存的数据。这个空间访问时要涉及两个指针寄存器。一个是基点(SS),其值不变,永远指向堆栈段的最小地址;另一个寄存器(SP)的值为堆栈空间的剩余大小,两者相加就是当前生效的堆栈地址。SP在遇到PUSH时减少,在遇到POP时增加,其指向的地址在堆栈区域内不断变化;当SP的值为0时就表示堆栈用光了。
入栈(PUSH)就是将一个数据存入SP指向的当前堆栈地址,然后SP指向堆栈内的下一个存储空间;出栈(POP)就是让SP返回前一个存储空间,然后读出这个地址内存储的数据。
堆栈的优势就是暂存数据时不用管到底存在哪了,只要按照后进先出的原则就可以保证恢复数据;缺点就是不能通过堆栈操作跳着访问栈内数据。

查看完整回答
反对 回复 2022-02-14
?
叮当猫咪

TA贡献1776条经验 获得超12个赞

入栈(PUSH)就是将一个数据存入当前ss:sp指向的地址,然后SP-2;出栈(POP)就是让SP+2,然后读出这个地址内存储的数据。

查看完整回答
反对 回复 2022-02-14
  • 2 回答
  • 0 关注
  • 874 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信