2010-04-01から1ヶ月間の記事一覧
CR0に値を設定してついにプロテクトモードに突入した。OS突入と同時にCSレジスタを切り替えるのだがまだそこにはいってない。DSやESなどのセグメントレジスタはすでに切り替えてるので、あとはCSレジスタのみ。レジスタダンプをしてるところのスクリーンショ…
GDTも読み込めた、あとはCR0を切り替えればプロテクトモード突入だ。CSレジスタを切り替えて32bit突入も目の前。そしてOSへ〜。一応GUIなOSをエミュレートしてるので、画面の変化まで持っていきたい
某OSのエミュレートしてたらついにLGDT命令がでてきた。これを処理してCR0を切り替えればプロテクトモード突入。そして32bitの世界へGO。カーネルVM探検隊のときまでにデモができる状況になるといいなぁ
SwingでいうところのJTableにあたるGridを使ってみることにした。、まだExt GWTに慣れてないので新しくでてくるクラスの名前に戸惑っている感じ。一体どこから実装すればいいのかがまだわかってない。とりあえず少しずつ進めていくために今回はGridを使って…
VESAに対応してるかどうか、あるOSのブートローダに聞かれたのでNO!にして先に進む。今度はキーボードの状態を聞かれたので、何も押されてないことを通知。そしてそれらの情報をメモリに書いてるらしい。もうすぐプロテクトモードに突入すると思われる。これ…
今、書いたい本は2冊ある。現在、PICを使っているのでPIC関係の本だ。それが以下の2冊。USBとネットワーク接続機器の本。PICで今はLEDを光らせてるだけなので、これからいろいろなセンサを試していこうと思っている。ある程度、センサを使ったら次はUSBや…
いつも通り作業してたところ、0x66というコードがでてきた。命令リファレンスには載ってなかったので、EIPの値を間違えてないか確認したが間違って無さそうだった。とりあえずGoogleで「0x66 機械語」と検索したら、Operand Prefixというのがでてきた。16bit…
これはやるしかないじゃないか。しかし金がない!5月まで待つか。しかし、これはメタルマックス3がでる影響か?この勢いでテッドブロイラーにも再会させて欲しい
Twitterでお気に入りに追加されたぶんだけ命令を実装するキャンペーンは見事失敗に終わった。当初の予定では30命令ぐらいを想定していたのだが、最後は85まで伸びたようだ。ムリムリ…。結局45命令実装して、いくつか バグがあったので潰した所、Haribote OS…
全てはこれが物語っている→ http://favotter.net/status.php?id=12562641776 …はい、無謀ですね…でもやるだけやります… とりあえず今まで実装した命令を載せておく 04 ib ADD AL, imm8 imm8 を AL に加算する。 05 iw ADD AX, imm16 imm16 を AX に加算する…
あるOSのバイナリ読み込んで、知らない命令が来たら止めて実装→再開→止めて実装→再開...を繰り返して33命令(MOV系多し)実装した。ビット演算にはある程度慣れていたから、苦しくはないが、16進数見てどのビットが立っているか、ちょっと時間がかかるときがあ…
今回はマウスカーソルがマップの端に行ったときにオートスクロールするようにした。そして全体図をつけてみた。スクリーンショットの右上のものが全体図。ここまでやるとさすがに重い。Firefoxだとスクロールがかなり重くなる。Chromeだとだいぶ軽くなるが、…
今日は研究室内でやる勉強会に向けて前進した。読む本(30日でできる! OS自作入門)をどのように進めるかを数人で相談した。まだメンバーの募集などはやっておらず、今日Skypeの研究室のメンバーが集まってるチャットで告知。そのうち正式な決定をメールを流す…
就職活動中とある場所でプログラム課題がだされたので、『HTML5を使って何か作る』のやつを提出しようかと思う。期限はないらしいが5月中に提出が望ましいらしい。現時点で、自作OSはただ表示するだけなので動きがなくてつまらないだろうし、x86エミュレー…
前回はレイヤー一つしか持っていなかったが、今回は上レイヤーと下レイヤーに分けてみた。表示するレイヤーと編集するレイヤーを指定できるようにした。表示については、屋根の部分の背景が透過されて、下レイヤーの地面の部分が表示されている。下レイヤー…
HTML5を使って何かを作ろうとしたが、実用性を考えると何もできない俺なので、役に立ちそうもないものでもいいから作ってみることにした。まぁ、すでに過去に何か作っていた気がするが気にしないでおこう。それで作ろうと思っていたものはマップエディタ。別…
自作OSでグラフィックに挑戦。画面モード切り替えて、リニアフレームバッファの位置などを取得して、その情報を元にメモリへ書きこんだ。四角形しか表示してないが、ただ塗りつぶすだけだとつまらないので、半透明っぽくしてみた。今は文字が表示できないの…
前にあった仮称のやつとは別にAmazonにあった。スーパーマリオギャラクシー 2(「はじめてのスーパーマリオギャラクシー 2」同梱)というのがあった。公式ページもできていた。前作がファイアマリオが頼もしく感じたので、今回も活躍の場があるといいな。ファ…
レジスタの管理方法で、今まではレジスタごとに変数を用意してたが、今回から配列で管理することにした。レジスタ番号でアクセスする命令が沢山ありそうなので、こういうふうにした。レジスタごとに変数だとレジスタ間転送などで全通りの組み合わせを用意し…
ModR/Mバイトのregister/opecodeの部分は命令によってregisterになったりopecodeになったりする。0x81の場合、opecodeになり、ここが0だとADD、7だとCMPになる。この場合はオペランドがレジスターと即値になっている。演算系命令の場合、レジスタがEAXの場合…
昨年度は研究室で『カーネル読書会』というのをやっていて、参加者で『詳解Linuxカーネル』を読んでいた。今年度も何かやりたいと思い、何をやるか考え中。研究室の分野的にカーネルとかVMとかデバイスドライバあたりがいいのではないかと考えている。そして…
第4回カーネル/VM探検隊の参加登録が始まったので登録してきた。紹介ページと登録ページhttp://atnd.org/events/3984がある。俺も何かLTで話すかもしれない…
Intelのマニュアルでわかってなかった部分がわかったので書いておく。それはレジスタ同士の演算である。例えばNASMで ADD AX, BX のような計算である。とあるOSでオペコード0x31がでてきたので、マニュアルを見た。そしたらXORであることがわかった。0x31の…
スイッチサイエンスで買ったColor LCDシールドの使い方がわからずに困っていたが、今日なんとか動かすことに成功した。必要なのはhttps://www.sparkfun.com/commerce/product_info.php?products_id=9363のページにあるExample Codeのリンク先のファイル。こ…
年齢が1つ上がった。いつもと変わらない日を過ごすんだろうが、何か気分を変えてもいいかもね。誕生日とは関係ないけど、今年は飛躍の年になるといいなぁ。勉強したいことは沢山ある。中でもIntel VTについて勉強したい。最近は何故かIA-32勉強してたりする…
今回は前回の[Java][x86エミュレータ]クラス分けを更に進めて、VMの本体のクラスからifを一部消すことにした。今までは if(code == 0x04){ ... }else if(code == 0x3C){ ... }else if(...){ }... という感じだったが、今回の変更で以下のようになった。Instr…
今までキットを組み立てたことはあったが、自分で作るのは今回が初めてだ。しかも、今まではプリント基板だったが、今回はユニバーサル基板だ。半田付けや、回路設計にかなり不安がある。しかし、気づいた。コンデンサが足りない、そして買ったはずのセラロ…
AmazonでIntel Celeron E3300 2.50GHzを4400円くらいで買った俺だがCore i7やCore i5で人気のやつの値段が気になり調べてみた。あくまでAmazonの値段だが。Core i7では『Intel Boxed Core i7 i7-860 2.80GHz 8M LGA1156』というのが人気らしい。値段は現時点…
前の[x86エミュレータ]BIOSを使って画面を塗りつぶすプログラムをエミュレートしたでは、BIOSの4bitカラーのカラーパレットを知らず特定の1色しかだせなかった。しかし、Twitterで@7shiさんからEnhanced Graphics Adapterのページを教えてもらい、カラーパレ…
http://www.saturn.dti.ne.jp/~hsakai/kozos/index.htmlを見ながらH8/3069Fネット対応マイコンLANボードで遊んでいる。自分でOS作ってマイコンで動かせたら面白そうだねと思いながら遊ぶ。LANボードなんだからネットワークに繋ぎたい。そして、こ…