zoukankan      html  css  js  c++  java
  • Assemble .macro

    写在前面:

      在阅读u-boot源码过程中,看到有些汇编使用.macro来进行宏定义,然后将相应指令写在其中。如下代码片段:

      

     1 .macro imx6ull_ddr3_evk_setting
     2     ldr r0, =IOMUXC_BASE_ADDR
     3     ldr r1, =0x000C0000
     4     str r1, [r0, #0x4B4]
     5     ldr r1, =0x00000000
     6     str r1, [r0, #0x4AC]
     7     ldr r1, =0x00000030
     8     str r1, [r0, #0x27C]
     9     ldr r1, =0x00000030
    10     str r1, [r0, #0x250]
    11     str r1, [r0, #0x24C]
    12     str r1, [r0, #0x490]
    13     ldr r1, =0x000C0030
    14     str r1, [r0, #0x288]
    15 
    16     ldr r1, =0x00000000
    17     str r1, [r0, #0x270]
    18 
    19     ldr r1, =0x00000030
    20     str r1, [r0, #0x260]
    21     str r1, [r0, #0x264]
    22     str r1, [r0, #0x4A0]
    23 
    24     ldr r1, =0x00020000
    25     str r1, [r0, #0x494]
    26 
    27     ldr r1, =0x00000030
    28     str r1, [r0, #0x280]
    29     ldr r1, =0x00000030
    30     str r1, [r0, #0x284]
    31 
    32     ...
    33 .endm

    一、这种伪汇编指令的用法:

       指令:.MACRO/.ENDM

    二、语法:

            宏名称 .MACRO [形式参数]

            ........

            宏定义语句

            ........

            .ENDM

    三、描述:

            用.MACRO指令可以定义一个宏,可以把需要重复执行的一段代码,或者是一组指令缩写成一个宏,在

            程序调用的时候就可以直接去调用这个宏而使代码更加简洁清晰,此宏由以下3部分构成(头-体-尾):

            1. 头: 在这里可以指定这个宏的名称,别且定义形式参数

            2. 体: 这里包含的是当这个宏被调用时所需要执行的指令或者语句。

            3. 尾:  这里用.ENDM标识着这个宏的结束。

    备注:形式参数只是一个标识符,会在宏展开或者宏调用时被逐个展开,形参的定义也必须按照全局变量定义的规则,形参不能为(%)。

  • 相关阅读:
    [引用]SQLServer占CPU100%
    负能量程序员杂谈(2)- 管理中的情和义
    负能量程序员杂谈(1)-世界上最单纯的职业:程序员
    FLV文件格式官方规范详解
    rtmp官方标准规范详细解析
    万恶的KPI、新兴的OKR及让人纠结的程序员考核
    管理点滴(一)
    选拨管理者的一个必要条件
    团队管理的简单总结:少即是多,体力透支,负能量管理,自我进化团队,沟通
    我的2015计划,目标
  • 原文地址:https://www.cnblogs.com/iriczhao/p/12492633.html
Copyright © 2011-2022 走看看