如何在没有扩展内联asm的情况下在gcc内联汇编中声明和初始化局部变量?

Aug*_*Aug 5 gcc scope local-variables inline-assembly

我知道这是一个非常基本的问题,但我真的很困惑.事实上,我绝对是gcc语法的新手.我希望在不使用扩展内联汇编的情况下拥有局部变量(事实上堆栈地址带有标签); 类似于intel语法中的代码:

DATA1 DB 100

MOV AL,DATA1

这是我猜可能在gcc中替代的代码:

- (int)someFunction:(int)x {

DATA1  DB  100 
MOV AL, DATA1
Run Code Online (Sandbox Code Playgroud)

但是这段代码导致了这个错误:

找不到架构x86_64的符号

我可以在x86中使用全局变量,但x64或x86_x64中的结果相同.

设置:LLVM 4.1; Xcode中使用的Cocoa 4

什么是正确的语法?

ist*_*iuk 7

GCC内联汇编程序不支持局部变量,在堆栈指针的帮助下定位变量或使用gcc的扩展语法:http: //gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html

如果您对AT&T语法感到不舒服,可以在gcc上使用英特尔语法:http: //xorl.wordpress.com/2009/01/01/intel-syntax-on-gcc/

这是关于GCC asm的优秀方法:http://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html