Intel の x86 コプロセッサを使用して行われた計算の結果を取得する方法を理解するのに苦労しています。
次のデータ セグメントを検討してください。
.data
res real4 ?
x real4 5.0
k real4 3.4
および次のコード セグメント、バージョン 1 :
.code
main:
fld x ; 5.0
fadd k1 ; 5.0 + 3.4
fistp res ; store as integer (it will round, in this case down)
mov eax, res ; eax = 00000008
end main
およびバージョン 2 :
.code
main:
fld x ; 5.0
fadd k ; 5.0 + 3.4
fstp res ; store as real
mov eax, res ; eax = 41066666
end main
バージョン 1は問題なく理解できました。
わからないバージョン2です。デバッガーで、バージョン 1 とまったく同じ計算が行われていることがわかりますが、保存するときは "41066666" のようになります!?
これの理由は何ですか?
8.4 を「41066666」にするために使用された「エンコーディング」は何ですか?
コンソールに出力できるように (たとえば、StdOut masm32 ライブラリ関数を使用して) 8.4 に戻す方法はありますか?
ありがとう。