2

我正在研究一些 x86 ASM 代码以及代码的真正作用,我的理解是power函数 (x^y) 在内部用作对数函数。在内部,我的意思是 CPU 寄存器。

为什么是这样?有什么好处?它是否可以被其他高级语言(如 C++)复制和借鉴?

4

2 回答 2

6

你应该看看这个数学

答案是说日志功能可以通过泰勒级数和查表相结合来实现。如果有查表,那么可能会被散列,查起来比pow更容易,pow只能通过计算得到。

所以对于 x y你可以写成

y = log<sub>10</sub> x . 

或者

y = (ln x)/(ln 10);

现在如果 pow 没有日志实现,那么应该通过加法链求幂 Wiki来实现,这需要运行时计算,这可能比查找日志需要更长的时间。

编辑:感谢@harold exponentiation 可以使用Exponentiation by squareing 更优化地执行。

于 2013-05-09T02:53:46.777 回答
5

请参阅此问题的答案:How to: pow(real, real) in x86

回想一下你的对数规则:以 2 为底,log2(x) 只剩下 x^y。

编辑:我们有一个 x86 指令来计算所需的每个组件。

于 2013-05-09T01:40:37.783 回答