D Dlang在GD中缺乏asm挥发性

时间:2017-02-27 03:34:51

标签: gcc assembly d compiler-optimization

据我了解,目前在GDC的GDC中没有等效的asm volatile(以防止优化为无效或动作)。这是对的吗?

如果您希望在使用GDC扩展asm块调用的某些情况下防止某些恶意事件,例如无法优化或代码运动,那么解决方法有哪些可能性? (我已经读过一些技巧,例如在asm块中引入一个假输出,加上对其余代码中'anchor'的依赖,这可能会也可能不起作用。)这样的东西看起来很脆弱,而且相当缺乏吸引力如果代码需要超高性能,但也许这只是生活。

我想有一个普遍的问题:没关系asm,如果由于其副作用(例如i / o)实际需要编译器,如何阻止编译器完全删除代码?问一个编译器为什么不删除对例如printf()的调用是一个非常愚蠢的问题,它肯定会加快代码的速度,而其余的代码并不依赖于它。这一切都归结为内联,整个程序优化/ LTO失败以及编译器必须保守并且假设对没有输出的函数的调用实际上做了一些有用的事情吗?

0 个答案:

没有答案