我正在研究一些x86 ASM代码以及代码实际执行的操作,我的理解是power
函数(x ^ y)在内部用作对数函数。在内部,我的意思是CPU寄存器。
这是为什么?有什么好处?它是否可以被其他高级语言(如C ++)复制和借用?
答案 0 :(得分:6)
你应该看看这个MATH,
答案是说日志功能可以通过泰勒系列和查找表相结合来实现。如果有一个查找表,那么它可以被散列并且查找将比只能通过计算获得的pow更容易。
因此,对于x y ,您可以将其写为
y = log<sub>10</sub> x .
或
y = (ln x)/(ln 10);
现在如果没有pow的日志实现那么它应该通过加法链取幂 Wiki来实现,这需要运行时计算,这可能需要比查找日志更长的时间。
编辑:感谢@harold取幂可以使用通过平方指数进行更优化。
答案 1 :(得分:5)
请参阅此问题的答案:How to: pow(real, real) in x86
回想一下你的对数规则:2的基数取消,log2(x)只留下x ^ y。
编辑: 我们有一个x86指令来计算所需的每个组件。