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

ARM チップに名前に 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 のコメントに関する詳細情報を追加すると、FCVTZSFJCVTZS(どちらも浮動小数点数を 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

おすすめ記事