.c 文件中的内联 PPC 汇编代码出现“错误:不支持对 <register> 进行重定位”错误

vim*_*hap 5 c assembly gcc powerpc

我有下面的内联汇编代码。但是当我尝试编译它时,它会抛出代码片段后面提到的错误。

unsigned int func(void)
{
  __asm__ ("mfspr r3, svr;");
}
Run Code Online (Sandbox Code Playgroud)

以下是错误。

{standard input}: Assembler messages:
{standard input}:3349: Error: unsupported relocation against r3
{standard input}:3349: Error: unsupported relocation against svr
{standard input}:3375: Error: unsupported relocation against r3
{standard input}:3375: Error: unsupported relocation against svr
{standard input}:3510: Error: unsupported relocation against r3
{standard input}:3510: Error: unsupported relocation against svr
{standard input}:3517: Error: unsupported relocation against r3
{standard input}:3517: Error: unsupported relocation against svr
Run Code Online (Sandbox Code Playgroud)

谁能帮我解决这些问题吗?

dra*_*sht 2

显然,gas 没有对这些寄存器的内置支持。为了使用它们,您应该自己定义它们或明确使用它们的索引,例如:

mfspr 3, <some_index_here>
Run Code Online (Sandbox Code Playgroud)

或者,您可以包括:ppc_asm.tmpl

如果您的核心是e500,那么 svr 索引将为 1023。