为什么从堆栈初始化会在 GNU GAS (AT&T) 中产生奇怪的结果
Why does initialising from stack yeld weird result in GNU GAS (AT&T)
我是个汇编小白。我正在尝试从堆栈中初始化变量(即在实际情况下,它们的值由第三方推送到堆栈中)。代码类似这样:
.data
b:
.long 0
a:
.long 0
.global main
.text
main:
push
pop b
push
pop a
无论如何,我希望 a 中有 1 个,b 中有 2 个。相反,我在 a 中有 1,在 b 中有 cruft(尽管它在执行之间是静态的)。我做错了什么?
非常感谢您。
你做错了两件事:
- 没有显示确切的代码,只是一些东西 "similar"。
- 未显示您如何检查该值。
代码按原样运行:
(gdb) p a
= 1
(gdb) p b
= 2
我是个汇编小白。我正在尝试从堆栈中初始化变量(即在实际情况下,它们的值由第三方推送到堆栈中)。代码类似这样:
.data
b:
.long 0
a:
.long 0
.global main
.text
main:
push
pop b
push
pop a
无论如何,我希望 a 中有 1 个,b 中有 2 个。相反,我在 a 中有 1,在 b 中有 cruft(尽管它在执行之间是静态的)。我做错了什么?
非常感谢您。
你做错了两件事:
- 没有显示确切的代码,只是一些东西 "similar"。
- 未显示您如何检查该值。
代码按原样运行:
(gdb) p a
= 1
(gdb) p b
= 2