我想做一个C宏(TRAMPOLINE_BLOCK),它接受一个预定义的宏常量(TRAMPOLINE_LENGTH),并写入那么多的asm volatile nop指令。例如:
#ifdef __x86_64__
#define TRAMPOLINE_LENGTH 41
#define TRAMPOLINE_BLOCK \
({ \
asm volatile ( \
"nop\n" \
...
);\
})
#else
#define TRAMPOLINE_LENGTH ...
#define TRAMPOLINE_BLOCK ...
#endif在这种情况下,TRAMPOLINE_BLOCK应该有41条nop指令。我一直在玩宏参数之类的东西,但还没有让它起作用。我该如何着手编写这样的宏呢?
发布于 2012-03-27 21:21:20
自己做这件事相对比较复杂。
P99有一个宏P99_DUPL,它允许您随心所欲地执行某些操作
P99_DUPL(41, TRAMPOLINE_BLOCK)应该能行得通。为此,您需要一个兼容C99的编译器。
https://stackoverflow.com/questions/9889723
复制相似问题