在__asm{...}语句块中,有一个功能非常常用,所以我想做成一个宏,
用如下形式:
#define MY_MACOR(x) \
__asm { \
... \
... \
}
里面的...代表我写的汇编语句,
但是我遇到如下的问题,
在这个语句块里,需要处理分支情况,我通过跳转指令和语句标号来实现,
当这个宏多次使用时,标号就会出现重复定义的情况,造成编译失败,
请问大家,有什么好办法解决这个问题,
ps,如果使用函数,通过call调用,那么效率就会有影响,而我这个程序效率是很重要的,所以最糟糕的是我手工展开这个宏很多次。。。。
------解决方案--------------------------------------------------------
内嵌汇编还能支持宏?没用过这个,还真不知道。纯汇编里,可以用 local 语句来说明标号是宏定义内的局部符号,可以被多次的宏引用正常使用:
- Assembly code
;* @ArgI - Macro function returns an argument specified by number;* from a VARARG list.;*;* Shows: Directives - FOR LOCAL EXITM;* TEXTEQU =;* Operator - EQ;*;* Params: index - one-based number of the argument to be returned;* arglist - argument list@ArgI MACRO index:REQ, arglist:VARARG LOCAL count, retstr count = 0 FOR arg, <arglist> count = count + 1 IF count EQ index retstr TEXTEQU <arg> ENDIF ENDM EXITM retstrENDM
------解决方案--------------------------------------------------------
看内嵌汇编有没有诸如local的东东,或者用##做运行时标号