ARM芯片有一个名称中带有JavaScript的指令

2020-10-17 16:59:09

FJCVTZS是浮点Javascript转换为有符号定点,四舍五入为零。它在ARM v8.3-A芯片和更高版本中受支持。这很奇怪,因为你没想到JavaScript会离裸机这么近。

我可以找到指令作用的解释,但找不到它存在的原因。这个线程说它是作为一条指令存在的,因为JS";缺少整数类型,这意味着某些用例经常因为没有很好的算法原因而令人讨厌地需要这个操作。这似乎是可能的,但我想要更详细的了解。

支持这句话:每当您对数字应用按位运算符时,JavaScript引擎都必须执行此操作(在规范中称为ToInt32),并且在其他各种时间(除非引擎能够将数字作为优化保持为整数,但在许多情况下它不能)。 --T·J·克劳德(T.J.Crowder)。

请注意,与为此作业提供的通常FCVTZS指令的关键不同之处在于,FJCVTZS在溢出时具有不同的行为。也就是说,你总是得到最少的32位,而如果数字不合适,FCVTZS似乎会做一些不同的事情。否则,FJCVTZS的正确行为似乎有点难以实现。 --米歇尔·福兹。

@Tim我同意TJ的观点,会议记录是离题的(我想它们也受到限制,所以你很难拥有它们),但在ARM驱动的设备上运行JavaScript是一件事,请参见使用JavaScript构建物联网设备 --阿德里亚诺·雷佩蒂(Adriano Repetti)。

试着改写你的问题,这样它就不会要求非现场资源,而是要求(现场)解释,如果你不想让它关闭的话。 --米歇尔·福兹。

这是因为JS对数字使用双精度,但是如果您想对位执行操作,这项任务不是微不足道的,所以将JS Double转换为整数的特定指令会让事情变得更容易。

FCVTZS和FJCVTZS(都是将浮点转换为整型)的不同之处在于,如果出现溢出,FJCVTZS的值将是0x80000000,而不是溢出,以便添加更多关于Fuz';注释的信息。此外,FJCVTZS可以生成异常,以指示转换是如何进行的(即不精确)。

您应该解释为什么现有的FCVTZS指令不足以完成任务。 --米歇尔·福兹。

这还不够,它的速度要慢得多(比方说至少要慢2/3倍),因为它需要10条不同的指令来执行相同的任务。当然,对较大的算法的影响远低于此,但当使用较小的A53时,速度和内存都将从中受益。)。现在,让我们把它移到,例如,为ARM编译的V8,它绝对值得一些CPU空间。 --阿德里亚诺·雷佩蒂(Adriano Repetti)。

点击“发布您的答案”,即表示您同意我们的服务条款、隐私政策和Cookie政策。

不是你想要的答案吗?浏览标记的其他问题或提出您自己的问题。