【问题标题】:Can't compile/assemble MRC and MCR coprocessor instructions on iPhone?无法在 iPhone 上编译/组装 MRC 和 MCR 协处理器指令?
【发布时间】:2011-09-24 23:49:52
【问题描述】:

我似乎无法用 iPhone 组装 MCR 和 MRC ARMv7 指令(这些是协处理器访问指令)?我在一些内联汇编块中有一些这些指令,它们与为不同的 CortexA8 芯片(OMAP 芯片)构建的 Code Sourcery gcc 工具链很好地配合,但是 Apple 的汇编器 - Clang 汇编器及其构建的 gnu 汇编器 - 抛出错误:

{standard input}:41:bad instruction `MRC p15,0,r2,C9,C12,0'
{standard input}:56:bad instruction `MCR p15,0,r0,C9,C12,0'
{standard input}:78:bad instruction `MCR p15,0,r0,C9,C12,1'
{standard input}:96:bad instruction `MCR p15,0,r0,C9,C12,2'
{standard input}:119:bad instruction `MCR p15,0,r2,C9,C12,4'
{standard input}:143:bad instruction `MCR p15,0,r0,C9,C12,5'
{standard input}:165:bad instruction `MCR p15,0,r0,C9,C13,1'
{standard input}:187:bad instruction `MCR p15,0,r0,C9,C13,2'
{standard input}:209:bad instruction `MCR p15,0,r0,C9,C13,0'
{standard input}:228:bad instruction `MRC p15,0,r0,C9,C13,0'
{standard input}:253:bad instruction `MRC p15,0,r0,C9,C13,2'

有什么想法吗?

【问题讨论】:

  • 出于好奇,您这样做是为了什么,希望有人能帮助您。
  • 这些指令操纵 Cortex-A8 协处理器 15 的 c9 部分。这些是性能计数器 - 周期计数器、总线计数器、缓存计数器和其他用于分析 ARMv7 代码的有用的小计数器。
  • 随机猜测:你试过把“MRC”改成“mrc”吗?
  • 埃加德! @servn - 那行得通! gcc从来没遇到过大小写问题?添加对此问题的回复,我会将其标记为答案。
  • 这是个好消息。坏消息是 Apple 已将 USEREN 寄存器设置为 0,这意味着这些性能计数器在用户模式下无论如何都不可用。哦,好吧。

标签: iphone gcc assembly arm clang


【解决方案1】:

(最初作为对问题的评论)

随机猜测:您是否尝试过将“MRC”更改为“mrc”? Apple 有一个相对古老的 ARM 汇编程序,它无法处理大写的任何内容。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-11
    相关资源
    最近更新 更多