用自定义指令替换每个乘法

时间:2017-02-23 16:33:24

标签: c++

我有一些基本的C ++代码(包含在下面)。我希望能够用自定义指令替换发生的每个乘法(包括在math.h中包含的cos函数内)。我可以直接在我的主要内容中调用自定义指令,但是' cos'仍将使用旧的乘法指令。

我考虑过做运算符重载,但我无法正常运行。

#include <iostream>
#include <string>
#include <math.h>

int main()
{
  int a = 2;
  int b = 5;
  std::cout << "mult: " << a * b << std::endl;
  std::cout << "cos: " << cos(b) << std::endl;
  return 0;
}

以我想要的方式实现此自定义指令的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

std::cos仅为内置浮点类型floatdoublelong double提供重载(也可以提供任何整数类型,但它可以提供#?在内部投射到double。您不能为内置类型重载运算符。这意味着你无法做你想要的事。

你能得到的最好的方法就是编写自己的数字类,重载乘法运算符,并使用替代乘法实现为它编写自己的三角函数。

答案 1 :(得分:0)

有一种方法可以在不触及代码的情况下替换某些功能。当然,这取决于您如何构建代码。 假设您正在使用Linux,则可以使用LD_PRELOAD注入功能。

以下是关于如何做到的一个很好的解释:

https://rafalcieslak.wordpress.com/2013/04/02/dynamic-linker-tricks-using-ld_preload-to-cheat-inject-features-and-investigate-programs/

如果这不完全适用于您的情况,您可以抓住一些想法或只是学习这个很酷的功能。