問題タブ [fpu]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
assembly - x87 FPU での単精度浮動小数点数の単純な追加
2 つの単精度浮動小数点数を取り、それらを加算して結果を表示する小さなアセンブリ プログラムを作成しています。ただし、後で使用するために結果をレジスタに保存したいと思います。作業を開始するために、C++ プログラムをアセンブリ プログラムにコンパイルし、それを編集しようとしました。ただし、次のような結果が得られます。
まず、フロートに関しては、s
32ビットとl
64ビットを意味するのは正しいですか? 28(%esp)
次に、データ レジスタ スタックに格納するためだけに32 ビットの float 値を にポップするのはなぜですか? これらの 2 行を削除すると、結果の精度が低下します。これは奇妙です。最後に、データ レジスタ スタックを再度ポップしますが、今回は 64 ビット値です。単精度の 32 ビット値が必要です。ただし、に変更l
するとs
、0が得られます。正確に何が起こっているのか知っている人はいますか?
assembly - x87 FPU の精度について
Intel IA-32 ソフトウェア開発者マニュアル。x87 FPU制御ワードのビット8と9が浮動小数点計算の精度を決定すると言われています。デフォルトの精度は拡張倍精度です。命令「FINIT」の実行後、精度は倍精度浮動小数点に設定されます。問題は、「FINIT」が実行された後、x87 FPU が 80 ビット データ レジスタの 64 ビットのみを使用して計算することです。また、FPU は拡張倍精度浮動小数点値をメモリから (へ) 受け入れる (出力する) ことはできません。これは正しいですか?
delphi - Delphi 64 ビット asm コンパイル エラー
次の関数は、64 ビットの Delphi XE2 コンパイラではコンパイルできません。(エラーはすべてfld
指示に関連しています。)
12行目と13行目:
20行目:
残念ながら、私にはアセンブリ スキルがなく、64 ビットに移植する必要があるこのサード パーティ コードを使用しています。32ビットと64ビットの両方で動作するようにするのを手伝ってもらえますか?
assembly - fstp コマンドの使用法
質問があります。浮動小数点ユニットのスタックが次のようになっているとしましょう。
この指示を実行した後:
私の予測では、ユニットは st(0) を st(1) に送信し (スタックの状況は になります1.5;1.5;2.5;0 etc
)、スタックの一番上をポップするので、状況は次のようになります。1.5;2.5;0 etc.
代わりに、次のように表示されます。
私の質問は、なぜst(7)
変化したのか、どうすれば期待した結果を達成できるのかということです。助けてくれてありがとう!
visual-studio - Visual Studio C++を使用したアセンブリ言語フロートを宣言する方法は?
ここにコードがありますが、浮動小数点数を宣言、入力、および出力する方法がわかりません。c では、%f は float です。コードで試してみましたが、機能しません。REAL 8も試しました。これが私のコードです。%d が整数であることは知っていますが、 %f を使用すると、出力が 0.000000 になり、正確な答えを出力できません。