“-ftrapv”和“-fwrapv”:哪个效率更高?

2023-12-27

来自 GNU 网站:

  • -ftrapv

    此选项针对加法、减法、乘法运算的有符号溢出生成陷阱。

  • -fwrapv

此选项指示编译器假设加法、减法和乘法的有符号算术溢出使用二进制补码表示进行回绕。该标志启用一些优化并禁用其他优化。

https://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Code-Gen-Options.html https://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Code-Gen-Options.html

我有两个问题:

  1. 这些选项中哪个对性能更好?
  2. -ftrapv定义说它会产生“陷阱”?这是否意味着例外? (我猜不会,但值得一问。)

The 整点这两个选项的目的是给优化器less比平常有余地。因此,除非您在优化器中遇到错误,否则最快的方法应该是两者都不使用,优化器假设您的代码没有任何溢出,并且不会发出代码来处理溢出。

当 -ftrapv 定义说它生成“陷阱”时,这是什么意思?这是否意味着例外?

这并不意味着 C++ 异常。它依赖于目标,但假设 x86,这意味着 GCC 运行时库会导致 SIGABRT 引发,这通常会中止您的程序。在其他平台上,它可能会使用导致硬件异常的特殊 CPU 指令。它主要用于调试目的,也许在某些情况下出于安全目的,其中溢出后继续的风险大于程序突然终止的风险。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“-ftrapv”和“-fwrapv”:哪个效率更高? 的相关文章

随机推荐