有没有将(任意)方程转换为位移操作的标准方法?
我的意思是将任何不是a或 – 的东西转换成位移,因此结束方程只包含操作数<<,>>,和 – .这有利于使公式减少处理器密集度.
显然,这些结果方程只是近似值,在考虑的顺序越多(一阶,二阶e.t.c)时给出更好的准确性.
我已经在网上搜索了关于此的任何信息,但找不到任何信息,除了特定公式的内容(sin,cos,inv e.t.c).
我想象的是多项式或泰勒的扩展过程,然后将其转换为位移操作.
解决方法
仅仅因为你将某些东西简化为更简单的指令,并不意味着它们会以某种方式执行得更快或更少.虽然您可以将许多事情减少到减少的操作子集,但您可能需要更多的操作才能完成相同的任务.处理器每秒只能执行如此多的操作,而您将首先遇到这种情况.
通常,当尝试在较低级别优化某些内容时,您会尝试使用更复杂的操作码,以便您需要更少的操作码.例如,您可以通过执行许多ADD指令来执行乘法运算.但是,对于除了最简单的例子之外的任何事情,它将花费比单个MUL操作码更多的ADD,并且执行时间要长得多.
回到你的实际问题但是……完全无视效率,你可以计算任何东西,只要你拥有的指令集是图灵完成.如果你小心选择那条指令,你实际上可以使用a single instruction来计算任何东西.我不相信有任何通用的方式来说“将任意算法转换为仅使用这些指令”,这通常是编译器编写者的工作.