打印
[应用相关]

汇编手册的宏定义

[复制链接]
705|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 | 只看该作者
主要目的是为程序员在编程时提供一定的方便  

使用特权

评论回复
5
sourceInsight| | 2019-11-2 18:00 | 只看该作者
宏定义是比较常用的预处理指令。。。

使用特权

评论回复
6
feiqi1| | 2019-11-2 18:02 | 只看该作者
#define 是预处理期处理的单元实体

使用特权

评论回复
7
androidbus| | 2019-11-2 18:03 | 只看该作者

宏定义是利用#define命令,用一个指定的标识代替一个字符串。  

使用特权

评论回复
8
litengg| | 2019-11-2 18:06 | 只看该作者
宏定义在编译期间即会使用并替换  

使用特权

评论回复
9
qiangweii| | 2019-11-2 18:07 | 只看该作者
在运行中是没有宏定义的概念的。。。

使用特权

评论回复
10
shashaa| | 2019-11-2 18:10 | 只看该作者
全局变量要到运行时才可以的。

使用特权

评论回复
11
bbapple| | 2019-11-2 18:11 | 只看该作者
在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可  

使用特权

评论回复
12
handleMessage| | 2019-11-2 18:13 | 只看该作者
在C中,常用预处理语句#define来代替一个函数定义。  

使用特权

评论回复
13
zhouhuanの| | 2019-11-2 18:14 | 只看该作者
#define是C语言中提供的宏定义命令  

使用特权

评论回复
14
wanglaojii| | 2019-11-2 18:16 | 只看该作者
宏定义是在预编译时是就决定的,在程序运行时是不能改的 。。

使用特权

评论回复
15
laozhongyi| | 2019-11-2 18:17 | 只看该作者
能在一定程度上提高程序的运行效率  。。

使用特权

评论回复
16
Edisons| | 2019-11-2 18:19 | 只看该作者
宏定义不是变量,它是立即数,也是常量,不占用内存。

使用特权

评论回复
17
_gege| | 2019-11-2 18:19 | 只看该作者
在预处理阶段,编译器中的预处理器会将你定义的宏展开,即 原封不动的替换宏的定义

使用特权

评论回复
18
Mozarts| | 2019-11-2 18:21 | 只看该作者
在编译的时候被替换到引用的位置。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

179

主题

1867

帖子

1

粉丝