c++ - 有没有一种在 C/C++ 中生成 nop 操作码的可移植方法?

标签 c++ c

在汇编中,有 nop操作码。假设我想单独使用 C/C++ 语法在生成的程序集中包含该操作码。有什么可移植的方法可以实现吗?

看完this , 我试着编译 (void)0;在最新的 MSVC 15.5.2 中没有成功生成 n​​op 指令,启用或不启用优化。

自内联汇编 is not ISO C 标准的一部分及其在 C++ 中的支持是 conditional ,我想避免这种情况。

在 Microsoft Visual Studio 中,我知道我可以使用 header <intrin.h> 中定义的 __nop() 函数如记录here成功创建单个 nop在生成的程序集中。

最佳答案

不,没有可移植的方法。

虽然编译器通常会为或多或少的奇异情况提供相当多的内部函数,并且通常还会提供一些内联编写汇编代码的方法,但这些都不是标准化的。

并且任何明显对应于“无操作”的不 protected 源代码级构造都没有机会抵抗最基本的优化。

关于c++ - 有没有一种在 C/C++ 中生成 nop 操作码的可移植方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48246046/

相关文章:

c++ - 遍历 vector 列 C++

c - 不同操作系统中可能出现的换行符有哪些

c - 与 dup2 一起使用时 exec() 不会终止

比较 "argv"和一个 "int"变量 (C)

c++ - 基类 'class std::vector<...>' 有一个非虚析构函数

c++ - 如何接近 C++ 解析器

java - 代码重构作业?

c++ - QRunnable - 如何在没有竞赛的情况下实现 WaitForFinished?

c - 为什么我的实例变量表现得如此奇怪?我做对了吗?

c - 如何将存储在数组中的字符串与 c 中完整库中的函数名称进行比较