在GCC中实施Borland的__emit__宏

时间:2016-03-04 06:51:45

标签: c++ assembly gcc

在Borland中,有一个宏__emit__,"一个伪函数,它将文字值直接注入到目标代码中。 (James Holderness)。

是否有gcc / g ++的等价物? (我似乎无法在文档中找到一个)

如果没有,我怎么能在我的C ++源代码中实现它?

可以在Metamorphic Code Examples

找到用法

1 个答案:

答案 0 :(得分:4)

您可以查看.byte汇编程序指令:

asm __volatile__ (".byte 0xEA, 0x00, 0x00, 0xFF, 0xFF");

如果GCC的优化器确定不需要输出变量,它们有时会丢弃asm语句。此外,如果优化器认为代码将始终返回相同的结果(即,其调用之间的输入值都没有变化),则优化器可以将代码移出循环。 Using the volatile qualifier disables these optimizations

无论如何,你应该注意许多极端情况(例如gcc skips asm code after goto ...)