![](https://jhalfmoon.com/dbc/wp-content/uploads/2018/11/JH-2-150x150.png)
前回は8086範囲をはみ出すENTER/LEAVE命令でしたが、今回は8086以来のファーポインタ(セグメント間参照)のロード命令、LESとLDSです。そろそろ8086命令は一巡するんじゃないかなどと思っていたのですが、数えてみたらまだまだ残ってます。先が長いのでそろそろ8086範囲は終わらせたいのだけれど。
デバイス作る人>>デバイス使う人>>デバイスおたく
前回は8086範囲をはみ出すENTER/LEAVE命令でしたが、今回は8086以来のファーポインタ(セグメント間参照)のロード命令、LESとLDSです。そろそろ8086命令は一巡するんじゃないかなどと思っていたのですが、数えてみたらまだまだ残ってます。先が長いのでそろそろ8086範囲は終わらせたいのだけれど。
前回は、ENTERが作り出すスタックフレームを眺めながらボヤイてましたが演習には至りませんでした。「やりたくないな~」感が充満。Debug.exeは強力なソフトウエアデバッガですが、「ソフトウエアの」デバッガです。自身がブレークかけるためにもスタックを消費。スタック操作の証拠を残すのがメンドイです。仕方ねえ、やるです。
前回CALL/RET命令を練習。しかし即値つきRETはENTER/LEAVEと一緒ね、ということで後回し。今回はENTER/LEAVE命令(8086に不在、80186以降のx86が装備)が「想定」しているスタックフレームについて復習していきます。便利?「高水準言語とのセマンティンクギャップ」が叫ばれた当時のアダ花?
“ぐだぐだ低レベルプログラミング(199)x86(16bit)、ENTER、LEAVEその1” の続きを読む
前回は条件フラグ共を「見て飛ぶ」条件ジャンプ命令Jccでした。今回はカウンタ・レジスタCXを「見て飛ぶ」(ついでの操作もあるけど)条件ジャンプ命令どもです。16ビットのx86はこのCXの扱いといい、ぜんぜん汎用レジスタでないです。御先祖から引きづっているものが多過ぎる?でもま、ループなど作る時には便利な命令どもです。
“ぐだぐだ低レベルプログラミング(197)x86(16bit)、LOOPとJCXZ” の続きを読む
x86の命令どもを16ビットモードから眺めてます。今回は条件付ジャンプです。x86を含むクラシックなプロセッサでは、数多くの条件フラグを駆使してジャンプするのが普通です。しかしレジスタの依存関係以外に伏線張ると「近代化時」にメンドクセー筈。モダンなRISC-Vなどはフラグ無、条件判断は条件ジャンプ命令自体で判定だよ。
“ぐだぐだ低レベルプログラミング(196)x86(16bit)、条件ジャンプ命令群 Jcc” の続きを読む
x86の命令どもを16ビットモードから眺めてます。今回は無条件ジャンプです。どのプロセッサも長いのとか短いのとか複数種類のジャンプ命令を持つことが多いですが、x86はやっぱりメンドクセーです。直接に間接、nearにfarそういえばshortもあったな、という感じ。アセンブラにもコマケー指示をせんとなりません。
“ぐだぐだ低レベルプログラミング(195)x86(16bit)、無条件JMP” の続きを読む
前回はブロック転送命令にまつわるコマケー話。今回はPUSH/POP命令にまつわるコマケー話です。x86の場合スタックへのデータの退避や復帰にはPUSH、POP命令を使います。PUSH、POP自体は分かり易い命令であるのでコマケー話など無い感じ。しかし、歴史を知らないと何でそんな命令があるの?という御供の命令もあり。
“ぐだぐだ低レベルプログラミング(192)x86(16bit)、PUSH/POPにも先祖の痕跡” の続きを読む
前回、DIレジスタをベースに使うメモリアクセスではDSがデフォルトになる件練習。しかしDIレジスタは一部命令でESと「不可分に結びついている」のです。x86式には「ストリング転送命令」、一般には「ブロック転送命令」においてです。今回はその代表 MOVS 命令について見ていきたいと思います。コマケー話の宝庫なのよ。
“ぐだぐだ低レベルプログラミング(191)x86(16bit)、MOVS、所謂ブロック転送命令” の続きを読む
ことさらにMOVなど転送命令を避けて今回に至ります。流石にこの辺で悪名高い x86 のセグメンテーションについて説明しておく必要を認めました。そこで今回はリアルモードのセグメンテーションの図解といたします。まあセグメンテーションといいつつ、そのうちやるつもりのプロテクテッド・モードのそれに比べりゃ可愛いもんだけれども。
“ぐだぐだ低レベルプログラミング(188)x86(16bit)、セグメンテーションその1” の続きを読む