gpt4 book ai didi

c - gcc中汇编语句的问题

转载 作者:太空宇宙 更新时间:2023-11-04 01:40:50 25 4
gpt4 key购买 nike

我在尝试在 FreeBSD 64 位中运行的 C 程序中遇到了一段汇编代码。

void  *curbrk;   
__asm__ __volatile__(
"movl .curbrk, %%eax;"
"movl %%eax, %0"
: "=r" (curbrk)
:: "%eax"
);

我收到类似“mov missing suffix or operand”的错误。(上面的代码遵循 AT&T 语法)是什么决定了我应该用于代码的语法 - 编译器(gcc 遵循 AT&T 语法)或处理器(我是在英特尔处理器上工作)。问题是由于代码采用 AT&T 语法还是我遗漏了什么?

最佳答案

如果您有 64 位 GCC,除非您使用 -m32 开关输出 32 位目标代码,否则上述代码将无法完成,因为 64 位指针值将不适合 32 位 EAX 寄存器.使用 -m32 生成 32 位输出,或者使用 rax 代替 eax 并将 movl 更改为 mov(不带“l”)

关于c - gcc中汇编语句的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5777113/

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