为什么ARM芯片在名称(FJCVTZS)中有一个带有Javascript的指令?

FJCVTZS是“浮点Javascript转换为有符号定点,四舍五入为零”。Arm v8.3-A 芯片及更高版本支持此功能。这很奇怪,因为你不希望看到JavaScript如此接近裸机。

我可以找到指令功能的解释,但找不到它为什么存在。这个线程说“它作为单个指令存在,因为JS缺乏整数类型意味着某些用例经常在没有良好的算法原因的情况下需要此操作。这是有道理的,但我想更详细地理解。


答案 1

这是因为JS对数字使用双精度,但是如果要对位执行操作,则任务并非易事,因此将JS双精度转换为整数的特定指令使事情变得更容易。

这个ARM链接很好地解释了这一点:https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions

为了添加有关 fuz 注释的更多信息,和(它们都将浮点数转换为 int)之间的区别在于,在溢出的情况下,值将0x80000000而不是溢出。此外,可以生成异常以指示转换如何(即不精确)。FCVTZSFJCVTZSFJCVTZSFJCVTZS

FJCVTZShttp://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0801g/hko1477562192868.html

FCVTZShttp://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0802a/FCVTZS_float_int.html


答案 2