能否使用宏进行算术运算(例如乘法)?
我理解编写如下宏:
#define mult(a,b) ((a)*(b))
将产品替换到所有地方。但我有两个参数都是常量。我知道编译器也会静态执行乘法,但问题是我必须使用#将结果转换为字符串。
有什么想法吗?
如果可以使用C ++宏完成,我还可以。我可以在C ++中编写这些特定模块并将其链接起来。
以下是我的现有代码
#define ARG_COPY() __asm__("subq $8, %rsp"); \
__asm__("movq %gs:0xe8, %r10"); \
__asm__("movq $16, %r11"); \
__asm__("1:"); \
__asm__("movq -8(%r10, %r11, 8), %rax"); \
__asm__("pushq %rax"); \
__asm__("decq %r11"); \
__asm__("jne 1b"); \
#define ARG_REMOVE() __asm__("add $136, %rsp");
现在上面的代码没有参数——136是16*8+8。我想将那个16变成一个参数。第一个宏中也使用了同样的16。
python
生成一些汇编文件了。这次我也会这样做。只是想避免创建另一个文件格式来提供这些常量。无论如何,谢谢! - Ajay Brahmakshatriya8
(2的幂),为什么不使用类似#define mul8(a) ((a) << 3)
的东西呢?这样,对于无符号值0-15,乘法可以正常工作,而不会有溢出的风险。 - David C. Rankin