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:好的,谢谢,重写了我的答案以使概念正确。 $ 适用于整个操作数,而不是标签名称。不久前我就想到了这一点,但显然还没有理解它。