为什么从堆栈大喊大叫初始化很奇怪会导致 GNU GAS (AT&T)



我有点像汇编程序中的noob。我正在尝试从堆栈初始化变量(即,在实际情况下,它们的值由第三方推送到堆栈)。代码类似于此:

.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. 没有显示确切的代码,只是一些"相似"的东西
  2. 没有显示您是如何检查值的

代码按如下方式工作:

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

最新更新