gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 14:01:18 25 4
gpt4 key购买 nike

我知道这是一个非常基本的问题,但我确实坚持了下来。实际上,我绝对是GCC语法的新手。

我想使用不带扩展内联汇编的局部变量(带有标签的堆栈地址)。类似于Intel语法中的以下代码:

DATA1  DB  100 
MOV AL, DATA1

这是我想可以在GCC中替代的代码:

int someFunction(int x)
{
__asm__ volatile(
"function1:"
".data;"
".2byte $4 data1 ;"

".text;"
"pushq %rbp;"
"movq %rsp , %rbp ;"

"movl var , %eax;" // this is source of error

"popq %rbp;"
"leaveq;"
"retq ; "
);
}

但是此代码导致此错误:

symbol(s) not found for architecture x86_64



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

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

正确的语法是什么?

最佳答案

GCC内联汇编器不支持局部变量,请使用GCC's extended syntax

如果您对AT&T语法不满意,可以使用use Intel syntax on GCC

这是一个很棒的how-to on GCC asm

关于gcc - 如何在不扩展内联汇编的情况下在GCC内联汇编中声明和初始化局部变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14155046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com