为什么从堆栈初始化产生奇怪的结果导致GNU GAS(AT& T)

时间:2015-12-03 18:37:18

标签: assembly x86 gas

我在汇编程序中是一个菜鸟。我试图从堆栈初始化变量(即在实际情况下,它们的值被第三方推送到堆栈)。代码类似于:

.data
b:
        .long   0
a:
        .long   0

        .global main
        .text
main:
        push $2
        pop b
        push $1
        pop a

无论如何,我所期望的是a中有1和b中有2。相反,我在a中有一个并且在b中有一个cruft(虽然它在执行之间是静态的)。我做错了什么?

非常感谢你。

1 个答案:

答案 0 :(得分:0)

你做错了两件事:

  1. 没有显示确切的代码,只是“相似”的内容。
  2. 未显示您如何检查该值。
  3. 代码按原样运行:

    (gdb) p a
    $1 = 1
    (gdb) p b
    $2 = 2