我可以在gcc内联汇编块中使用函数宏吗?

我可以在gcc内联汇编块中使用函数宏吗?,gcc,assembly,macros,Gcc,Assembly,Macros,可以在asm块中使用这样的函数吗? 如果没有,请建议使用它的方法。是的,这是可能的,但如果您需要此类功能,您可能不应该使用内联asm,而应该使用单独的asm模块 #define MOV_MACRO(R0,R1)\ {\ "mov R0, R1 \n\t"\ } __asm__ volatile(\ MOV_MACRO(r4,r5) :"r4","r5"\

可以在asm块中使用这样的函数吗?
如果没有,请建议使用它的方法。

是的,这是可能的,但如果您需要此类功能,您可能不应该使用内联asm,而应该使用单独的asm模块

#define MOV_MACRO(R0,R1)\
{\
    "mov R0, R1 \n\t"\                                                      
}

__asm__ volatile(\
    MOV_MACRO(r4,r5)
    :"r4","r5"\
    );\

你能回答为什么它不应该是内联asm吗?内联asm通常应该用于不可能进行函数调用或有大量开销的简单代码段。如果您需要的宏似乎表明您的代码比这更复杂。当然也有例外,这只是一个一般准则。
#define MOV_MACRO(R0,R1) "mov " #R0 ", " #R1 "\n\t"

void foo()
{
__asm__ volatile(
    MOV_MACRO(r4,r5)
    ::
    :"r4","r5"
    );
}