
前回、ついに16ビットと32ビットの狭間にあるプロテクト・モードの「ナンヤカンヤ」をひとまず完了、32ビット世界に足を踏み入れる決断をいたしました。16ビット環境ではエミュレータ上のFreeDOSにお世話になってましたが、ここからは「ネイティブx86」環境での実習としたいと思います。さてアセンブラとデバッガはどれ? “ぐだぐだ低レベルプログラミング(249)x86(32bit)、MLとWinDbgを使いたい” の続きを読む
デバイス作る人>>デバイス使う人>>デバイスおたく

前回、ついに16ビットと32ビットの狭間にあるプロテクト・モードの「ナンヤカンヤ」をひとまず完了、32ビット世界に足を踏み入れる決断をいたしました。16ビット環境ではエミュレータ上のFreeDOSにお世話になってましたが、ここからは「ネイティブx86」環境での実習としたいと思います。さてアセンブラとデバッガはどれ? “ぐだぐだ低レベルプログラミング(249)x86(32bit)、MLとWinDbgを使いたい” の続きを読む

前回、「最近、特権命令に昇格した」奴らのナンヤカンヤを復習。早速そいつらSGDTとSIDTを使役して得られたヒントを元に「悪さ」を仕掛けてみます。GDTのメモリ領域に直接手を突っ込むという荒業です。まあ、現環境では特権付の一番偉いところでユーザコードが走っているので実際には「無法でもなんでもない」のでありますが。
“ぐだぐだ低レベルプログラミング(248)x86(32bit)、GDTをメモリから覗き見” の続きを読む

前回、LARとLSL命令を使ったGDTのダンプを実施。しかしこれではベースアドレスが分かりませぬ。直接のメモリダンプでGDTを覗き見したいデス。それは無法者のやることだな、自分。今回環境ではOK。そのための準備としてGDTレジスタをセーブしてGDTの在処を知りたい。あれれ、特権命令じゃないの?特権命令なの?SGDT。

前回で、古き「よき」時代のDOSエクステンダ「DOS4GW」が各セグメントレジスタにセットしてくれているデフォルトセグメントの属性観察はできたようです。ここまでくればGDT(グローバル・ディスクリプタ・テーブル)のダンプなど指呼の間であります。どんなディククリプタがGDTに詰まっているのか興味シンシンなんであります。。

前回は「プロテクトモード」に忍び込み、古き時代のDOSエクステンダ「DOS4GW」のデフォルトセグメントの属性を観察。しかし至らぬ点が2つあり。プロテクトモードでは「許されねえ」アクセス等ままあり、前回はその辺はパス。もう一つはアクセス権は観察したもののセグメント・リミットは無。今回はその辺をテコ入れっす。 “ぐだぐだ低レベルプログラミング(245)x86(16/32bit)、DOS4GWセグメント続” の続きを読む

ようやく「メンドクセー」プロテクトモード(セグメンテーション)の復習を一通り完了。今回は実際にプログラムを動かしてみたいと思います。しかし「プロテクトモード」に入るということ自体、難行苦行。昔はサラサラ書いていた気がしないでもないのですが、忘却力の老人の気力が持ちませぬ。そこで御すがりするのがDOS4GWとな。 “ぐだぐだ低レベルプログラミング(244)x86(16/32bit)、DOS4GWのセグメント” の続きを読む

前回、リハビリかねてコールゲートを復習した筈が、突発事態にまたもや断絶。なんとか再々起動で今回は割り込みやら例外やらに入りたいと思います。プロテクト・モードの仕組みの復習ばかりしていて、プログラムを動かしていないのでフラストレーションたまってます。今度こそひと段落で来週こそはアセンブラに向き合いたいです。 “ぐだぐだ低レベルプログラミング(243)x86(16bit)、割り込み/トラップゲート” の続きを読む

前回OpenWatcom Cコンパイラを使って、FreeDOSのプロンプトから起動できる「プロテクト・モード」プログラムを作成してみました。お手軽。ツールが自動でDPMIサーバをオブジェクトに組み込んでくれているみたい。さて、DPMIといってもどんなバージョンが組み込まれているの?APIでご本人に問いかけてみます。 “トホホな疑問(63) FreeDOS、DOS/4GW上のDPMIバージョン知りて~” の続きを読む

前回ついにプロテクト・モードに突入。まずは16ビット世界の80286のプロテクト・モードからです。386以降の世界でも存在はしているけれど黒歴史。しかし8086からみたらめくるめく新たなセグメンテーション世界が存在しているのでした。そのメモリ空間を説明するのに避けて通れぬのがTASKです。OSの一部がCPUに載ってる? “ぐだぐだ低レベルプログラミング(240)x86(16bit)、286タスクステートセグメント” の続きを読む

前回、「MS-DOS互換」のFreeDOSを立ち上げると、フツーにコマンドプロンプトでさえ、V86(仮想86)モードで走ってることに気づきました。そしてその仕組みについてちょいと調べました。ここにも歴史アリ。今回は更なる疑問に迫るべく、DOS/4GWにお願いして「プロテクト・モード」上で走るプログラムを作成してみます。
“トホホな疑問(62) FreeDOSのプログラムがプロテクトモードで走っているの確認して~” の続きを読む

前回まで8086になく80186/80286で拡張されている命令の練習を実施。カテゴリの残りまだあるのですが、INS、OUTSは練習するのがメンドイです。一方他は8086でもあった命令にオペランドを追加したものどもで花がないっす。そこで今回から80286にて「追加されたもの」プロテクト・モードへ入りたいと思います。
“ぐだぐだ低レベルプログラミング(239)x86(16bit)、286プロテクトモード” の続きを読む