如何使用C的内联汇编器访问ARM Cortex M3的r11寄存器

贝特曼鲁

我尝试了下面的代码,但未能按照下面的http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472f/Cihfhjhg.html引用从r11中读取正确的值

volatile int top_fp;
__asm
{
    mov top_fp, r11
}

r11的值为0x20009DCC top_fp的值为0x00000004

[更新]解决方案,我们必须使用嵌入式汇编程序:

__asm int getRegisterR11()
{
    mov r0,r11
    BX LR //return, must not omitted!!!
}
克利福德

您发布的链接仅指向lr(R13),sp(R14),pc(R5),以获得旧版本代码对ARM ADS的旧版本的代码支持,不适用于通用寄存器。

在ARM的编译器(也用于Keil的MDK-ARM)中:

内联汇编器不提供对ARM处理器的物理寄存器的直接访问。如果将ARM寄存器名称用作嵌入式汇编程序指令中的操作数,则它将成为对同名变量的引用,而不是对物理ARM寄存器的引用。

(参考:内联汇编器和寄存器访问

ARM编译器中的内联汇编器会像其内联的C或C ++代码一样受到优化,因为这种编译器生成的代码在任何情况下都可能与您编写的代码不同。如果要完全按照编写的方式生成汇编代码,则必须使用嵌入式汇编程序而不是内联汇编程序

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

想要用C ++编写Arm Cortex交叉汇编器

来自分类Dev

ARM64(Cortex-A53)-GNU汇编器-GIC寄存器:未知或缺少系统寄存器名

来自分类Dev

ARM Cortex M3:原子写入

来自分类Dev

如何释放ARM Cortex M3堆栈

来自分类Dev

如何在 Cortex M4 上设置辅助控制寄存器位

来自分类Dev

使用JLink和GDB读取Cortex M0 MCU的外设寄存器

来自分类Dev

使用JLink和GDB读取Cortex M0 MCU的外设寄存器

来自分类Dev

从C的内联汇编器中定义的访问数组

来自分类Dev

对ARM寄存器R10和R11进行限制

来自分类Dev

将C代码转换为ARM Cortex M3汇编代码

来自分类Dev

对ARM Cortex A8上的汇编中NEON向量/寄存器的所有元素/通道(成对?)进行异或

来自分类Dev

对ARM Cortex A8上的汇编中NEON向量/寄存器的所有元素/通道(成对?)进行异或

来自分类Dev

ARM Cortex-M 内存访问

来自分类Dev

通过arm C内联汇编器在内存中处理数组

来自分类Dev

通过arm C内联汇编器处理内存中的数组

来自分类Dev

ARM汇编器中的编码寄存器操作数如何?

来自分类Dev

ARM Cortex-M3启动代码

来自分类Dev

GCC ARM如何使用内联汇编将值分配给特定的fp寄存器?

来自分类Dev

修改Comipler RT汇编代码以针对Arm Cortex M3 / M4进行编译(CPSR / APSR位操作)

来自分类Dev

我正在尝试为 ARM Cortex M3 编写模拟器。如何读取二进制文件然后对其进行解码?

来自分类Dev

C-读取并设置汇编器寄存器

来自分类Dev

ARM Cortex M3上的int64_t原子

来自分类Dev

R7和R11与ARM体系结构中的链接寄存器(thumb / arm)调用约定的关系

来自分类Dev

C ++将参数传递给内联汇编器函数

来自分类Dev

如何检查Cortex M3中是否启用了中断?

来自分类Dev

在启动代码的情况下,如何在cortex m3中执行复位序列?

来自分类Dev

使用内联汇编器调用Brk syscall

来自分类Dev

使用C和内联汇编器查找数组中的最大浮点数

来自分类Dev

STM32中的外设寄存器在哪里?它们是在cortex-m内核中还是在外围设备本身中?

Related 相关文章

  1. 1

    想要用C ++编写Arm Cortex交叉汇编器

  2. 2

    ARM64(Cortex-A53)-GNU汇编器-GIC寄存器:未知或缺少系统寄存器名

  3. 3

    ARM Cortex M3:原子写入

  4. 4

    如何释放ARM Cortex M3堆栈

  5. 5

    如何在 Cortex M4 上设置辅助控制寄存器位

  6. 6

    使用JLink和GDB读取Cortex M0 MCU的外设寄存器

  7. 7

    使用JLink和GDB读取Cortex M0 MCU的外设寄存器

  8. 8

    从C的内联汇编器中定义的访问数组

  9. 9

    对ARM寄存器R10和R11进行限制

  10. 10

    将C代码转换为ARM Cortex M3汇编代码

  11. 11

    对ARM Cortex A8上的汇编中NEON向量/寄存器的所有元素/通道(成对?)进行异或

  12. 12

    对ARM Cortex A8上的汇编中NEON向量/寄存器的所有元素/通道(成对?)进行异或

  13. 13

    ARM Cortex-M 内存访问

  14. 14

    通过arm C内联汇编器在内存中处理数组

  15. 15

    通过arm C内联汇编器处理内存中的数组

  16. 16

    ARM汇编器中的编码寄存器操作数如何?

  17. 17

    ARM Cortex-M3启动代码

  18. 18

    GCC ARM如何使用内联汇编将值分配给特定的fp寄存器?

  19. 19

    修改Comipler RT汇编代码以针对Arm Cortex M3 / M4进行编译(CPSR / APSR位操作)

  20. 20

    我正在尝试为 ARM Cortex M3 编写模拟器。如何读取二进制文件然后对其进行解码?

  21. 21

    C-读取并设置汇编器寄存器

  22. 22

    ARM Cortex M3上的int64_t原子

  23. 23

    R7和R11与ARM体系结构中的链接寄存器(thumb / arm)调用约定的关系

  24. 24

    C ++将参数传递给内联汇编器函数

  25. 25

    如何检查Cortex M3中是否启用了中断?

  26. 26

    在启动代码的情况下,如何在cortex m3中执行复位序列?

  27. 27

    使用内联汇编器调用Brk syscall

  28. 28

    使用C和内联汇编器查找数组中的最大浮点数

  29. 29

    STM32中的外设寄存器在哪里?它们是在cortex-m内核中还是在外围设备本身中?

热门标签

归档