[应用相关] 汇编手册的宏定义

[复制链接]
976|17
 楼主| xia00 发表于 2019-11-2 17:52 | 显示全部楼层 |阅读模式
汇编手册的宏定义很简单,而且后面的参数 P1 P2 啊这些都有用到,
add3 .macro P1, P2, P3, ADDRP
MOV ACC, P1
ADD ACC, P2
ADD ACC, P3
ADD ACC, ADDRP
.endm
为什么下面的宏定义里面就没有任何关于m,n这些参数的应用。
ADCDRV_8ch_INIT    .macro m,n,p,q,r,s,t,u
;=============================
_ADCDRV_8ch_RltPtrA    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 1
_ADCDRV_8ch_RltPtrB    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 2
_ADCDRV_8ch_RltPtrC    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 3
_ADCDRV_8ch_RltPtrD    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 4
_ADCDRV_8ch_RltPtrE    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 5
_ADCDRV_8ch_RltPtrF    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 6
_ADCDRV_8ch_RltPtrG    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 7
_ADCDRV_8ch_RltPtrH    .usect "ADCDRV_8ch_Section",2,1,1    ; output terminal 8

; publish Terminal Pointers for access from the C environment
        .def     _ADCDRV_8ch_RltPtrA
        .def    _ADCDRV_8ch_RltPtrB
        .def    _ADCDRV_8ch_RltPtrC
        .def    _ADCDRV_8ch_RltPtrD
        .def     _ADCDRV_8ch_RltPtrE
        .def    _ADCDRV_8ch_RltPtrF
        .def    _ADCDRV_8ch_RltPtrG
        .def    _ADCDRV_8ch_RltPtrH

        MOVL    XAR2, #ZeroNet                        ; "ZeroNet" is address to a location initialised to 0
        MOVW    DP, #_ADCDRV_8ch_RltPtrA
        MOVL    @_ADCDRV_8ch_RltPtrA, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrB, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrC, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrD, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrE, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrF, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrG, XAR2            ; zero output terminal pointer
        MOVL    @_ADCDRV_8ch_RltPtrH, XAR2            ; zero output terminal pointer        
        .endm

hfdy01 发表于 2019-11-2 17:56 | 显示全部楼层
使用简单宏定义可用宏代替一个在程序中经常使用的常量  
CallReceiver 发表于 2019-11-2 17:57 | 显示全部楼层
宏定义是高级语言编译器提供的常用语法。。
boy1990 发表于 2019-11-2 17:59 | 显示全部楼层
主要目的是为程序员在编程时提供一定的方便  
sourceInsight 发表于 2019-11-2 18:00 | 显示全部楼层
宏定义是比较常用的预处理指令。。。
feiqi1 发表于 2019-11-2 18:02 | 显示全部楼层
#define 是预处理期处理的单元实体
androidbus 发表于 2019-11-2 18:03 | 显示全部楼层

宏定义是利用#define命令,用一个指定的标识代替一个字符串。  
litengg 发表于 2019-11-2 18:06 | 显示全部楼层
宏定义在编译期间即会使用并替换  
qiangweii 发表于 2019-11-2 18:07 | 显示全部楼层
在运行中是没有宏定义的概念的。。。
shashaa 发表于 2019-11-2 18:10 | 显示全部楼层
全局变量要到运行时才可以的。
bbapple 发表于 2019-11-2 18:11 | 显示全部楼层
在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可  
handleMessage 发表于 2019-11-2 18:13 | 显示全部楼层
在C中,常用预处理语句#define来代替一个函数定义。  
zhouhuanの 发表于 2019-11-2 18:14 | 显示全部楼层
#define是C语言中提供的宏定义命令  
wanglaojii 发表于 2019-11-2 18:16 | 显示全部楼层
宏定义是在预编译时是就决定的,在程序运行时是不能改的 。。
laozhongyi 发表于 2019-11-2 18:17 | 显示全部楼层
能在一定程度上提高程序的运行效率  。。
Edisons 发表于 2019-11-2 18:19 | 显示全部楼层
宏定义不是变量,它是立即数,也是常量,不占用内存。
_gege 发表于 2019-11-2 18:19 | 显示全部楼层
在预处理阶段,编译器中的预处理器会将你定义的宏展开,即 原封不动的替换宏的定义
Mozarts 发表于 2019-11-2 18:21 | 显示全部楼层
在编译的时候被替换到引用的位置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

179

主题

1867

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部