MIPS交叉编译器无效指令

时间:2018-01-12 15:38:40

标签: mips cross-compiling inline-assembly

我想在Centos7中使用gcc生成MIPS二进制文件。我已经成功安装了binutils和gcc。

我用于交叉编译的命令行:

mips-mti-elf-gcc -o exception.o exception.c

然后出现的错误就像:

/tmp/ccFbK9Ow.s: Assembler messages: /tmp/ccFbK9Ow.s:123: Error: invalid operands addiu $8,$sp,'

这就是问题界线

  /* exception function arguments */
    "   srl $4, $9, 2           \n" /* adjust cause arg */
    "   move    $5, $8              \n" /* execution pointer */
    "   mfc0    $6, $8              \n" /* bad address if any */
    "   addiu   $7, $sp,    0           \n" /* register table on stack */
    "   addiu   $8, $sp,                \n" /* stack pointer */
    "   sw  $8, 4*4($sp)            \n"
    "   la      $1, interrupt_ex_handler    \n"
    "   jalr    $1                  \n"
    "   j   return                  \n"

我在哪儿?

1 个答案:

答案 0 :(得分:2)

程序集无效。这条线;

addiu   $7, $sp,    0

看起来不错。

addiu   $8, $sp,     

在逗号后面缺少最后一个操作数。我猜它应该是;

addiu   $8, $sp,     0

从您的问题中不清楚有问题的程序集是否嵌入在C文件中,或者是否由编译器生成 - 我假设前者。如果没有,它可能有助于发布一个显示问题的最小示例C文件。