将方程转换为位移操作

gbm*_*ter 7 c optimization performance bit-shift

是否有任何标准方法将(任意)方程转换为位移操作?

我的意思是将任何不是+或 - 的东西转换成位移,所以结束方程只包含操作数<<,>>,+和 -.这样做有利于减少处理器密集度.

显然,这些结果方程只是近似值,在考虑更多订单(一阶,二阶等)时提供更好的准确性.

我已经在网上搜索了关于此的任何信息,但找不到任何信息,除了特定公式(sin,cos,inv等)的东西.

我想象的是多项式或泰勒的扩展过程,然后将其转换为位移操作.

wha*_*mma 3

仅仅因为您将某些指令简化为更简单的指令,并不意味着它们会在某种程度上执行得更快或强度更低。虽然您可能能够将许多事情减少为操作的减少子集,但您可能需要更多的操作来完成相同的任务。处理器每秒只能执行这么多操作,您将首先遇到这个问题。

通常,当尝试在低级别优化某些内容时,您会尝试使用更复杂的操作码,以便需要更少的操作码。例如,您可以通过执行许多 ADD 指令来执行乘法。但是,对于除了最琐碎的示例之外的任何其他情况,它将比单个 MUL 操作码花费更多的 ADD,并且执行时间要长得多。

回到你的实际问题...完全忽略效率,只要你拥有的指令集是图灵完备的,你就可以计算任何东西。如果您小心选择该指令,您实际上可以使用单个指令计算任何内容。我不相信有任何通用的方式来表达“将任意算法转换为仅使用这些指令”,这通常是编译器编写者的工作。