x86

far call

x86

インテル資料は、x86を勉強する上で、とても重要な資料なのだが、 これだけでは、読みこなすのが難しい内容である。 上巻は、流し読みの後、拾い読みで、必要なところを繰り返し読み。 中巻は、最も使用頻度が高い、リファレンス。 下巻は、全く別のCPUの…

難解過ぎるプロテクトモード

x86

これまでリアルモードで試行錯誤してきたわけど、 そろそろプロテクトモードについても勉強を始めようと、 インテルの資料を眺めているのだが... もう、泣きそうです。 色々と機能が増えたのは良いのでしょうが、全部が必要とも思えない。 まずは、必須機能…

とりあえず読み込んでいるようだ

x86

お気楽に、とりあえず、1セクタ分の読み込み機能を実装。 エラー処理やキャンセル処理などは含めていないので、 ちょっと入力を間違えたりしたら大変な事になるような代物。(苦笑) こういう細かい部分は、自分的には苦手な分野なので、 余裕がある時に、ゆ…

もしかしたら!!

x86

どうにも、こうにも、怪しいと思った箇所をいくら眺めてみても、原因が分からない。 こういう時に相談できる相手がいたら、どんなに心強い事か... そんな事を考えたりもしたけど、相談できる相手が都合良く現れる訳もなく... とにかく一人で悩み続けるしかな…

試行錯誤してみる

x86

; 手続き呼び出し CALL BX とりあえず、ここが怪しい... と思われる。 試しに、 ; 手続き呼び出し CALL puts としてみる。 これだと、相対CALLだけど、これでも動かなければ、原因は別にあるはず。 結果 → (予想通り)動いた じゃ、次に、 MOV BX, puts MOV A…

例外発生?リセットされた?

x86

なんか、とりあえず、あっさり実装出来たかな?と思ったら、 実機で動作確認してみたところ、OSが再ロードされちゃうみたい? QEMUでは、上手く動いていた気がするんだけど、何でだろ? とりあえず、手順を確認。 cmd_call: ; 変数領域確保 ; [BP-04] オフ…

CALLの種類

x86

さて、モニタ的な物を作っているところで、CALL機能を実装しようと思っている。 今のところ、リアルモードなので、セグメントとオフセットを入力し、 セグメントの値が、現在のセグメントと一致すれば、オフセットのみ、 一致しなければ、セグメント:オフセ…

未だに意味不明なアドレッシングモード

x86

x86のアドレッシングモードは、なかなかに豊富なわけだが、 これが、初心者にとっては、なかなかに難解なわけである。 例えば、 MOV AX, [EBX+ECX] は、OKだけど、 MOV AX, [BX+CX] は、NGとかね。 でも、 MOV AX, [BX+SI] は、OKだったり... これをき…

アセンブラの難しさ?

x86

これまた、きっと、今更な話だと思うのだけれど、 アセンブラだけでプログラムを記述するのは、やっぱり、大変だ。 つまり、要するに、何でもありの無法地帯が大問題になったりする。 アセンブラは、即ち、ほぼプロセッサの命令その物であるわけだから、 そ…

今更セグメントにはまる

x86

頭では理解していたつもりでも、実際やってみて、初めて理解出来る物事は多い。 プログラミングなんて、その最たる物だと思う。 それさえ、分かっていたつもりでも、何度となく身に沁みる経験をする。 今回も、正に、そのような経験である。 x86のメモリモデ…

暗号その物だな、こりゃ

x86

x86の命令フォーマットを勉強中。 なんとなくの知識を、掘り下げてじっくり学んでみると、 今まで見えなかった事が、じんわり見えてきたりもしますが、 見えなくて良かった事というのも、時にはあるように思います。 x86の命令フォーマットも、或いは、その…