• ARM在gcc下面的汇编指令片段解析


    下面是一段汇编代码的片段。

    00000432:   mov     r10, r7
    
    00000434:   mov     r11, r7
    
    00000436:   mov     r12, r7
    
    00000438:   ldr     r1, [pc, #40]   ; (0x464 <Reset_Handler+84>) /* 将地址PC+40(立即数,十进制)中保存的数load到r1*/
    
    0000043a:   ldr     r2, [pc, #44]   ; (0x468 <Reset_Handler+88>)
    
    0000043c:   subs    r2, r2, r1 /* subtract. Is an optional suffix. If S is specified, the condition code flags are updated on the
    result of the operation.  r2 = r2 - r1 */
    
    0000043e:   subs    r2, #1 /* r2 = r2 - 1. 其中1是十进制表示的立即数 */

    通过汇编语言能够察觉到,C语言是最接近于汇编的语言。

    从FreeRTOS中的port.c文件可以看出,ARM架构有其独特的特点,并不和其他架构的细节一致。

    在FreeRTOS的操作系统的实现中,port.c中表达了详细的执行细节。注意,这里面用到的一些技术性技巧比较多,比如对汇编语言在gcc下面的使用,对于链接文件的各种技巧的使用。

    可能使用了在汇编语言中定义全局变量的技巧。

    参考资料:Cortex-M4-Devices-Generic-User-Guide.pdf

    参考资料: https://zhuanlan.zhihu.com/p/336687316

  • 相关阅读:
    UIScrollView控件介绍
    xib的简单使用
    使用xib开发界面
    浅析IOS中的AutoLayout
    关于字典转模型的个人理解
    Linux开发基础环境配置
    深度学习相关环境的配置
    蓝牙协议分析(2)_协议架构
    蓝牙协议分析(1)_基本概念
    10项目实战-交易数据异常检测
  • 原文地址:https://www.cnblogs.com/praiseslow/p/16044250.html
Copyright © 2020-2023  润新知