【问题标题】:ARM: different ways to transfer data from core registers to other registersARM:将数据从核心寄存器传输到其他寄存器的不同方式
【发布时间】:2012-07-22 03:21:30
【问题描述】:

据我所知,有许多不同的方法可以将数据从 ARM 核心寄存器(R 寄存器)传输到其他寄存器。我找到了这两种方法:

  1. 使用MCR指令从核心寄存器传输到协处理器寄存器

  2. 使用VMOV指令从核心寄存器转移到D寄存器

我需要遍历每种方式并​​找出每种方式的延迟。但是现在,我想知道是否还有其他方法可以将数据从核心寄存器传输到我可能忘记的其他寄存器(不是内存)。

我的架构是 ARMv7-A,我使用的是 GCC 4.6.3。

【问题讨论】:

  • 这是家庭作业吗?您想知道的一切都在 ARM ARM 或该架构的 TRM 中。您可以非常快速地完成每条指令。
  • 不,这不是。我正在对我正在研究的 ARM 模型进行一些更改。是的,我浏览了架构参考手册,这就是我发现的。我只是想确保我没有错过任何重要的事情,因为我是新手。
  • 我会在手册中搜索 cpsr 或 spsr 或仅搜索 psr 以查看您是否看到其他内容。 mrc/mcr 是典型的函数,进出协处理器的方式(如果您检查旧的 fpa 指令,我认为它们只是已命名的协处理器指令)

标签: gcc assembly arm cpu-registers armv7


【解决方案1】:

指令时序是特定于微架构的(即 ARMv7 架构的不同实现会有不同的延迟)。

您需要在 TRM 中查找您所针对的特定处理器,以找到每个实现的延迟。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-25
    • 2020-11-05
    • 2017-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多