web-dev-qa-db-ja.com

ARMチップに、名前(FJCVTZS)にJavascriptが含まれる命令があるのはなぜですか?

[〜#〜] fjcvtzs [〜#〜] は、「浮動小数点JavaScriptから符号付き固定小数点への変換、ゼロへの丸め」です。 Arm v8.3-Aチップ以降でサポートされています。 JavaScriptがベアメタルに非常に近いとは思わないため、これは奇妙です。

命令の内容の説明はありますが、なぜ存在するのかはわかりません。 このスレッド は、「それは単一の命令として存在します。JSには整数型がないため、特定のユースケースでは、適切なアルゴリズム上の理由なく、この操作が卑劣に頻繁に必要になるためです。」それはもっともらしいことですが、もっと詳しく理解したいと思います。

18
Tim Smith

JSは数値に倍精度を使用するためですが、ビットを使用して演算を実行する場合、タスクは簡単ではないため、JSを倍精度整数に変換する特定の命令を使用すると簡単になります。

この腕のリンクはそれを非常によく説明しています: https://community.arm.com/processors/b/blog/posts/armv8-a-architecture-2016-additions

Fuzのコメントに関する詳細情報を追加するために、FCVTZSFJCVTZS(どちらも浮動小数点をintに変換する)の違いは、オーバーフローが発生した場合のFJCVTZS値です。オーバーフローする代わりに0x80000000になります。さらに、FJCVTZSは、変換がどのように行われたか(つまり、不正確)を示すために例外を生成できます。

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

16
Jose