Assembly, x86: How to push a label to the stack?
给定数据:
1 2 3
| .section data
data_set:
.long 2,5,33,54,2,76,4,37,43,223,98,70,255 |
如何将数据的起始地址(而不是该地址中的值)压入堆栈?
我试过这个:
最终(在尝试访问此地址中的数据之后)导致了段错误。
- 你试过了吗?
-
为什么不尝试在调试器下执行这段代码并观察会发生什么?
-
@talz 尝试使用调试器来了解控制流并查看 cde 崩溃的位置。
在 AT
- 从技术上讲,label 始终是一个地址。 $ 只是选择带有立即数的指令编码。例如。如果你想立即获得两个标签 foo 和 bar 的区别,你会做 $foo-bar 而不是 $foo-$bar (这也碰巧组装没有错误,但引用符号 foo 和 <x7 >)。
-
@Jester:好的,谢谢,重写了我的答案以使概念正确。 $ 适用于整个操作数,而不是标签名称。不久前我就想到了这一点,但显然还没有理解它。