
このところ8087浮動小数点コープロセッサの「メンドイ」話が続いてます。前回は丸めとか無限大の制御とかメンドイ奴らの説明で終わってました。今回は、ラスボス?例外の登場です。例外そのものもいろいろな種類があってメンドイのですが、それ以前に、例外がCPUの8086へと伝わる経路もまたメンドイです。8087は自立してるし。
デバイス作る人>>デバイス使う人>>デバイスおたく
このところ8087浮動小数点コープロセッサの「メンドイ」話が続いてます。前回は丸めとか無限大の制御とかメンドイ奴らの説明で終わってました。今回は、ラスボス?例外の登場です。例外そのものもいろいろな種類があってメンドイのですが、それ以前に、例外がCPUの8086へと伝わる経路もまたメンドイです。8087は自立してるし。
前回は、非正規数(デノーマル)とか疑似無限大とか「ヤバイ奴ら」の説明で力尽きてしまいました。しかし説明書きながらも「座りの悪さ」を感じていたのです。そういえば、メンドイ奴ら、丸めと計算精度の制御とか、無限大の計算モードとかやってなかったじゃないかと。8087の制御ワードの説明がいるな。それには8087の内部型も要説明。
前回は、8087のスタック・トップが正か負かゼロか、それとも比較しちゃヤバイやつなのかを判定するFTST命令を練習しました。しかし8087にはもっと細かくスタック・トップの素性を検査してくれる命令FXAMあり。しかし、これを理解するにはNaNだけでなく、非正規数とか無限大とか、疑似ナンタラとかヤバイ奴らが目白押しっす。 “ぐだぐだ低レベルプログラミング(219)x86(16bit)、浮動小数点数の検査 FXAM” の続きを読む
前回は8087での浮動小数点数の比較結果を8086のフラグに反映させて分岐する練習でした。今回は比較でなくテストです。8087のレジスタスタックのトップに置かれている浮動小数値が、正なの負なのゼロなの?と調べる命令。でもメンドクセーことに「比較不能」という分類もこれあり。浮動小数だもんね。ようやくNaN登場。
“ぐだぐだ低レベルプログラミング(218)x86(16bit)、浮動小数点数のテスト” の続きを読む
前回で8087の加減乗除は極めてしまったかと思いましたが早とちりデス。計算したら、計算結果を判断するという過程が必要。当然、8087には8087の比較命令というものが存在するのですが、8086側が司っているプログラム・フローに反映するのはどしたら良いの?ここで古代の遺物と蔑まれていた命令が活躍。ホントか?
前回は8087の浮動小数加算命令を練習、これで加減乗除はバッチリかと思えば、「演算順序」の問題もあり。某国の小学校のようにスカラーの乗算に順序を求めることは流石にないです。減算、除算のときだけです。オペランドの表記法のルールと相まって慣れないとハマります。それもこれもスタック・アーキテクチャのせい?知らんけど。
前回は8087に浮動小数値をロード。その度にレジスタ・スタックは積みあがっていきます。今回は、浮動小数の加算。演算結果はスタックトップに書きこむのですが、スタックトップ位置はそのままの場合と、ポップして1個少なくなる場合あり。それに忘れちゃいけないx86はCISCデス。FADDでメモリを参照することも可。 “ぐだぐだ低レベルプログラミング(215)x86(16bit)、浮動小数点数の加算” の続きを読む
前回、8087数値演算コープロセッサの実行制御などハード的な部分を復習しました。何年、いや何十年ぶりだ?いよいよ浮動小数点演算命令の演習に突入?かと思われましたが、まだ復習必要っす。8087のレジスタです。こいつがまたメンドクセー奴。浮動小数点数のルールの数々、お惚け老人は覚えきれませぬが、知らないと命令動かせませぬ。
“ぐだぐだ低レベルプログラミング(213)x86(16bit)、8087のレジスタ” の続きを読む
前回までに8086/8088命令はほぼ舐め終わりデス。残るはWAIT命令とESC命令群です。ただし、WAIT命令を使うには「数値演算コープロセッサ」8087に登場していただかねばなりません。そしてESC命令には8087の命令が詰まってますが、8086/8088も遊んでいるわけではありませぬ。 “ぐだぐだ低レベルプログラミング(212)x86(16bit)、WAITとESCAPE命令” の続きを読む
遥か半世紀を遡る8088/8086の時代からx86はマルチプロセッサに対応しとります。そのお印がLOCKプリフィックスです。LOCK自体はエミュレータ上でも使い放題ですが意味なし。その動作をシミジミ味わうには、マルチ・プロセッサに対応したインテル・マルチバスシステムなどが必要。そんなもの無いぞなもし。 “ぐだぐだ低レベルプログラミング(210)x86(16bit)、LOCKプリフィクス” の続きを読む