use*_*816 2 c++ math x86 assembly mathematical-optimization
我正在研究一些x86 ASM代码以及代码的真正功能,我的理解是power函数(x ^ y)在内部用作对数函数.在内部我指的是CPU寄存器.
为什么是这样?有什么好处?它是否可以被其他高级语言(如C++)复制和借用?
你应该看看这个MATH,
答案是说,日志功能可以通过泰勒系列和查找表相结合来实现.如果有一个查找表,那么它可以被散列并且查找将比只能通过计算获得的pow更容易.
所以对于x y你可以把它写成
y = log<sub>10</sub> x .
Run Code Online (Sandbox Code Playgroud)
要么
y = (ln x)/(ln 10);
Run Code Online (Sandbox Code Playgroud)
现在,如果没有pow的日志实现那么它应该通过Addition chain exponentiation Wiki来实现,这需要运行时计算,这可能需要比查找日志更长的时间.
编辑:感谢@harold取幂可以使用指数通过平方更优化地执行.
看看这个问题的答案:如何:x86中的pow(真实,真实)
回想一下你的对数规则:2的基数取消,log2(x)只留下x ^ y.
编辑:我们有一个x86指令来计算所需的每个组件.