[〜#〜] fjcvtzs [〜#〜] は、「浮動小数点JavaScriptから符号付き固定小数点への変換、ゼロへの丸め」です。 Arm v8.3-Aチップ以降でサポートされています。 JavaScriptがベアメタルに非常に近いとは思わないため、これは奇妙です。
命令の内容の説明はありますが、なぜ存在するのかはわかりません。 このスレッド は、「それは単一の命令として存在します。JSには整数型がないため、特定のユースケースでは、適切なアルゴリズム上の理由なく、この操作が卑劣に頻繁に必要になるためです。」それはもっともらしいことですが、もっと詳しく理解したいと思います。
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