gpt4 book ai didi

c 文件中内联汇编代码的编译错误,可能与分支有关

转载 作者:行者123 更新时间:2023-11-30 17:14:37 25 4
gpt4 key购买 nike

我有以下代码。当我尝试编译它时,给出了代码片段后面提到的错误。

void func()
__asm__ (
"mfspr 12, 1017;"
"rotrwi 12,12,%0;"
"andi. 11, 12, %1;"
"beq done;"
"3:;"
"mfspr 12, 1017;"
"andi. 11, 12, %2;"
"bne 3b;"
"ori 12, 12, %2;"
"mtspr 1017, 12;"
"isync;"
"3:;"
"mfspr 12, 1017;"
"andi. 11, 12, %2;"
"bne 3b;"
"done:;"
::"r"(31), "r"(1), "r"(2048));
}

错误:

{standard input}: Assembler messages:
{standard input}:3607: Error: bad expression
{standard input}:3607: Error: missing ')'
{standard input}:3607: Error: missing ')'
{standard input}:3607: Error: syntax error; found `r', expected `,'
{standard input}:3607: Error: junk at end of line: `r9)!31)&((%r9)|31),0,31'

我认为我正在做的分支存在一些问题,但我不太确定出了什么问题。谁能帮我解决这个问题吗?

最佳答案

试试这个:

  void func()
__asm__ (
"mfspr 12, 1017\n"
"rotrwi 12,12,%0\n"
"andi. 11, 12, %1\n"
"beq done\n"
"3:\n"
"mfspr 12, 1017\n"
"andi. 11, 12, %2\n"
"bne 3b\n"
"ori 12, 12, %2\n"
"mtspr 1017, 12\n"
"isync\n"
"3:\n"
"mfspr 12, 1017\n"
"andi. 11, 12, %2\n"
"bne 3b\n"
"done:\n"
::"i"(31), "i"(1), "i"(2048));
}

; 更改为 \n 以便更容易看出哪些行是错误的。

对于使用立即数而不是寄存器的指令,“r”(N) 更改为 “i”(N)

关于c 文件中内联汇编代码的编译错误,可能与分支有关,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30259453/

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