【问题标题】:Assembly Push Instruction装配推送说明
【发布时间】:2015-12-08 02:39:06
【问题描述】:

问题

考虑 GCC 编译器、AT&T 语法和 32 位汇编,两条指令相当于:

Push %eax 

尝试:

我认为是下面这两个:

Addl $0x4, %esp
movl %eax, -0x4(%esp)

有人可以确认吗?如果它是错误的,请有人指出我正确的方向。谢谢!

【问题讨论】:

  • 当你推送时堆栈在内存中增长,而不是向上增长。试试subl $0x04, %espmovl %eax, (%esp)
  • 哦,我很接近,谢谢。
  • 是的subl,使用等效代码查看我原始评论的更新。
  • 那么这是否意味着如果我想进入堆栈中的下一个位置,我也会这样做,但使用 'movl %eax, $-0x4(%esp)' 代替?

标签: gcc assembly att


【解决方案1】:

应该是,

leal -4(%esp), %esp;
movl %eax, (%esp);

sub 可能会更改标志!

【讨论】:

    猜你喜欢
    • 2023-04-11
    • 2016-07-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多