FJCVTZS是“浮点Javascript转换为带符号的定点,四舍五入为零”。 Arm v8.3-A芯片和更高版本支持该功能。这很奇怪,因为您不希望JavaScript如此接近裸机。
我可以找到该指令的解释,但找不到其存在的原因。 This thread说:“它作为一条指令存在是因为JS缺少整数类型,这意味着某些用例出于不必要的算法原因常常会淫秽地需要此操作。”这是合理的,但我想更详细地了解。
答案 0 :(得分:8)
这是因为JS对数字使用双精度,但是如果您要对位执行运算,那么这项任务就很简单了,因此将JS双精度转换为整数的特定指令使事情变得简单。
此手臂链接对其进行了很好的解释:https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions
为了添加有关fuz注释的更多信息,FCVTZS
和FJCVTZS
之间的区别(它们都将浮点转换为int)是在发生溢出的情况下,FJCVTZS
的值将为0x80000000而不是溢出。此外,FJCVTZS
可以生成一个异常,以指示转换的方式(即不精确)。
FJCVTZS
:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0801g/hko1477562192868.html
FCVTZS
:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0802a/FCVTZS_float_int.html