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

用自定义指令替换每个乘法 我有一些基本的C++代码(包括在下面)。我希望能够用自定义指令替换发生的每一次乘法(包括math.h中包含的cos函数)。我可以直接调用main中的自定义指令,但“cos”仍将使用旧的乘法指令,c++,C++,我曾考虑过做操作符重载,但我无法正确地实现这个函数 #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)

我曾考虑过做操作符重载,但我无法正确地实现这个函数

#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;
}
#包括
#包括
#包括
int main()
{
INTA=2;
int b=5;

std::cout
std::cos
仅为内置浮点类型
float
double
long double
提供重载(也可以提供任何整数类型,但在内部强制转换为
double
)。不能为内置类型重载运算符。这意味着您不能按要求执行操作


您最好编写自己的数值类来重载乘法运算符,并使用可选的乘法实现为其编写自己的三角函数。

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

下面是一个很好的解释:


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

我可以问一下您为什么要这样做吗?(p.S:我很确定您想要的是不可能的,运算符重载对基类型不起作用,因此除非您重构整个代码以使用您可以控制的自定义类型…)NIOSII不支持浮点硬件乘法。我正在引入硬件来实现这一点,并希望加快cos计算。我目前有一条自定义指令,因此我可以将
a*b
作为
自定义_指令(a,b)来执行
,但由于cos在math.h库中,我无法更改这些乘法。show您知道您的编译器使用的
std::cos
版本中有乘法吗?您有权访问编译器的源代码吗?使用
自定义_指令(a,b)可能更容易获得它
否则软件会成倍增加,而不会实际更改您的程序