当前位置: 代码迷 >> 汇编语言 >> vs2005 内嵌汇编 书写宏的有关问题
  详细解决方案

vs2005 内嵌汇编 书写宏的有关问题

热度:4462   发布时间:2013-02-26 00:00:00.0
vs2005 内嵌汇编 书写宏的问题
在__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的东东,或者用##做运行时标号
  相关解决方案