【问题标题】:Assembler error.: Bad instruction汇编程序错误。:错误指令
【发布时间】:2011-12-13 11:42:08
【问题描述】:

我遇到了这个错误

/tmp/ccK86fyk.s: Assembler messages:
/tmp/ccK86fyk.s:69: Error: bad instruction `sw $3,0(r3)'
/tmp/ccK86fyk.s:70: Error: bad instruction `sw $7,4(r3)'

(此长代码的其余部分在此粘贴中。:http://pastebin.com/6YRx8rDh

CPU 是 maemo fremantle 内置项目中的 arm Cortex-A8。

好吧,我的汇编知识很少,一直在研究学习 关于它的更多信息,但我似乎无法理解这个错误。 我现在也在谷歌上研究了几天,但我找不到具体的 回答我的问题。

这是包含导致错误的行的标题。:http://pastebin.com/k3D4cg0d

(提供了更多关于评论的信息,因为我不能发布超过 2 个链接)

【问题讨论】:

  • 这是它所指的 C 文件。:pastebin.com/Ymg1X5dg 我不认为这是 gcc 配置问题,因为根本没有太多可配置的东西。我也使用 scratchbox gcc。:这就是 gcc -v 返回给我的内容。:pastebin.com/tA70snzY 在此先感谢各位,希望我没有遗漏任何信息,也希望我做好功课,我研究了在问之前我可以。
  • 在问题中包含您的代码/错误,以确保重要信息不会与问题分开消失。另外,请在问题中指出 CPU/架构。
  • 谢谢Alex,我添加了一部分错误,但是不能全部粘贴,否则我会占一个大页面,因为错误有152行,代码有31 + 39行...还添加了 CPU 以及我正在构建的系统。希望你们理解我为什么将它留在粘贴网站上。

标签: assembly arm instructions


【解决方案1】:

SW 和 LW 是 MIPS 架构的操作码(Load word et Store Word)。 您不能将此汇编代码与 Cortex A8 一起使用。

PS:对不起,我之前说过是Aarch64指令。我错了……

【讨论】:

  • 嗯,我说过我对汇编知识很少,我对32位或64位编译没有任何定义。你的意思是我正在编译什么文件?这是来自gba模拟器gpsp的bios文件。我还更新了我的错误信息,这是我正在运行的arm cortex a8,我之前的想法是在另一只手臂上!
  • 嗯好吧..我现在明白了... LW 和 SW 在 ARM V7 上不存在(并且在 aarch64 arm v8 中也不存在(我犯了一个错误))。这是加载和存储字的 MIPS 指令。所以这个汇编代码不能在 Cortex A8 平台上编译。抱歉,我会更改我的帖子。
  • 我以为这段代码已经翻译过了,但它似乎仍然来自 PSP,而且 psp 使用 MIPS 处理器......我怎样才能让它看起来对 ARM 友好?
  • 我不太擅长使用内联代码。如果我想尝试一个简单的翻译,我说“SW $7, 4(%0)”应该替换为“STR $7, [%0, #4]。我不知道 %0 是什么。大概是一个地址赋予函数 save_reg。您必须在 ARM 上节省 $4、$5、$6、... $14(因为寄存器比 MIPS 上的少)。LW 必须替换为 LDR。希望对您有所帮助!
  • 在你之前回答我之后,我做了一些研究并发现了 STR 和 LDR,我改变了这些,我的代码和你的代码片段 STR $7, [%0, #4]\n (在任何一行)返回我错误:预期 ARM 寄存器 -- `str $7,[r3,#4], ARM 是否支持 r3?还是我想错了?如果有人想看看,这也是完整的 C 文件。:pastebin.com/5a1jJE1d(第一篇文章的头文件也完整)
【解决方案2】:

我在使用“arm-none-linux-gnueabi-gcc version 4.5.1”编译内核时遇到了这个问题,并使用“arm-none-linux-gnueabi-gcc version 4.8.3”修复它

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-06-12
    • 2021-04-08
    • 1970-01-01
    • 2011-09-21
    • 1970-01-01
    • 2015-03-16
    • 2019-11-23
    • 1970-01-01
    相关资源
    最近更新 更多