
前回まで8086になく80186/80286で拡張されている命令の練習を実施。カテゴリの残りまだあるのですが、INS、OUTSは練習するのがメンドイです。一方他は8086でもあった命令にオペランドを追加したものどもで花がないっす。そこで今回から80286にて「追加されたもの」プロテクト・モードへ入りたいと思います。
“ぐだぐだ低レベルプログラミング(239)x86(16bit)、286プロテクトモード” の続きを読む
デバイス作る人>>デバイス使う人>>デバイスおたく
前回まで8086になく80186/80286で拡張されている命令の練習を実施。カテゴリの残りまだあるのですが、INS、OUTSは練習するのがメンドイです。一方他は8086でもあった命令にオペランドを追加したものどもで花がないっす。そこで今回から80286にて「追加されたもの」プロテクト・モードへ入りたいと思います。
“ぐだぐだ低レベルプログラミング(239)x86(16bit)、286プロテクトモード” の続きを読む
前回、x86(16bit)範疇にはまだまだ命令があることに気づきました。お尻が長いよ。今回は、8086になく80186/80286で拡張されている命令のその2(遥か昔にENTER/LEAVEはやったので)ということでBOUND命令を練習してみます。使うか使わないかはあなた次第?コンパイラによっては余計なお世話か? “ぐだぐだ低レベルプログラミング(237)x86(16bit)、BOUND、添え字のチェック” の続きを読む
長らく8087FPUの命令の練習を続けてきましたが、前回にて一応の完了といたしたいと思います(本人まだやる気ですが別シリーズ化の予定。)今回から32ビット、とも思いましたが、x86(16bit)範疇にはまだまだ命令が存在します。80186と80286で追加された命令どもです。なかなか32ビットモードに入れんぞなもし。 “ぐだぐだ低レベルプログラミング(236)x86(16bit)、80186/80286追加命令” の続きを読む
前回、8087数値演算コープロセッサの制御命令の一覧を掲げました。全部を一気に説明するつもりが、ほんの一部の命令を説明したところで力尽きてました。今回は残りの制御命令を端から見ていきたいと思います。ううむ、アセンブラの実習はまたまた次回に見送りだな。なかなか「低レベル」練習に戻れませぬ。
“ぐだぐだ低レベルプログラミング(234)x86(16bit)、続、FPU制御命令” の続きを読む
前回は8087ストア命令を練習。いつものように命令セットに非対称性がありました。しかし今回のあれやこれやに比べたらまだましだったかもしれません。今回はずっと顔を背けてきた(その割に使ってしまった過去回もあるけど)FPUの制御命令を一挙に列挙してみたいと思います。今回は強烈なメンバどもを拝観するだけ、練習はまた今度。
前回は8087のpacked な BCD 整数のロード、ストア命令がなんで18桁なのか年甲斐もなく悩んでみました。今回はフツーの浮動小数とフツーの整数(2の補数)のストア命令を練習してみます。そんなの簡単じゃん、といいつつ、そこはx86一族です。ここにも命令セットの非対称性あり。いつものコマケー話なんだが。
“ぐだぐだ低レベルプログラミング(232)x86(16bit)、FST、ストアあれこれ” の続きを読む
前回はpartialでexactな「剰余算」でした。今回もメンドクセー命令がつづきます。packed な BCD 整数のロード、ストア命令っす。BCD=Binary-coded decimalデス。8087FPUには「フツーの」整数とは別にBCD数を扱うための命令あり。計算できる桁数は10進18桁です。なんで18桁?
前回は整数もFPUレジスタにロードした後は浮動小数と同じ指数と仮数の組み合わせ、だから「整数演算命令は不在」などと軽はずみなことを書いてしまいました。すみません。訂正させていただきます。整数演算のFPU命令あります。その理由は8087(x86)がCISCだから。演算のオペランドにメモリをとれるのだよね。忘れてました。
“ぐだぐだ低レベルプログラミング(229)x86(16bit)、FPUつかった整数演算” の続きを読む
前回まで8087FPUの浮動小数を扱う命令ばかり練習してきました。でもFPUにも整数をロード/ストアする命令があるのです。しかし整数を演算する命令というのは脇役※。FPUレジスタにロードしてしまえばどんな整数も強力なテンポラリReal型に収まってしまうみたいです。今回はその様子を前回やったFXTRACT命令使って観察。
“ぐだぐだ低レベルプログラミング(228)x86(16bit)、整数のFPUレジスタ上の表現” の続きを読む
前回は、絶対値や符号反転など「仮数部の符号」操作を主にやりました。仮数あれば指数あり、ということで今回は指数部中心のコマケー操作です。FRNDINT(整数丸め)、FSCALE(2のべき乗スケーリング)、FXTRACT(指数部、仮数部抽出)とな。意外と?素直な操作だけれども浮動小数のフォーマットは頭の中に置いといて。 “ぐだぐだ低レベルプログラミング(227)x86(16bit)、指数部の操作あれこれ” の続きを読む
前回の対数関数、前々回の指数関数と「素の機械語命令」のままでは定番関数値が直接求まらないので「ひと捻り」必要でした。今回はお楽、スタックトップに置いた値を素直に処理してくれます。浮動小数値の符号反転(FCHS)、絶対値(FABS)、そして平方根(FSQRT)です。ひとよひとよにひとみごろ~。
“ぐだぐだ低レベルプログラミング(226)x86(16bit)、絶対値、平方根、符号反転” の続きを読む