Intel base instruction -- push pop

/*
 * push与pop
 */
    1.栈是向下增长的,因此栈顶元素的地址是所有栈中元素地址中最低的。

2.%rsp保存着栈顶元素的地址。

3.push和pop同样有pushq,pushl,pushw,pushb等操作。

4.pushq时,先将栈顶指针减8,再将值写到新栈顶地址,

pushq %rbp

等价于:

        subq $8,%rsp (下一章讲述这个指令)
        movq %rbp,(%rsp)

这两种操作的区别是机器代码中pushq指令编码占1字节,而上面两条指令加起来需要8字节。

5.类似地,popq会把栈顶的值读出数据,然后再将栈指针+8,注意此时原先栈顶的内容是不变的(虽然栈顶指针已经不指向它了)。

/*
 * push
 */
    入栈,esp - 4

/*
 * pop
 */
    出栈,esp + 4

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值