マイペースなプログラミング日記

DTMやプログラミングにお熱なd-kamiがマイペースに書くブログ

2011-08-01から1ヶ月間の記事一覧

簡単なADD命令追加 #7

今回はオペコード0x04にあたるADD AL, Imm8を実装した。その追加に伴い以下のファイルを作成した ./vm/instruction/add/AddALImm8.rb 中身は require "./vm/register/RegisterIndex.rb" include RegisterIndex class AddALImm8 def execute(vm) al = vm.getR…

前に買ったARMボード

ARM

前に買ったARMボード用のライブラリを読んで1から自分用に作ってみたいなと思っていたが、ソースコードが全然読めない。頑張れば読めるんだろうけど定数やマジックナンバーが何を表してるのかが分からない。ボードの仕様がどこかにあるんだろうけど、それを…

例外作成 #6

まず、以下のファイルを作成した ./vm/exception/Exception.rbそして中身は class NotImplementedException < Exception; end これはvmクラスのexecuteメソッドで使っている。取得した命令が未実装の場合、この例外を発生させる。メッセージには命令コードを…

Owatter 0.2 お気に入りユーザ

Owatter 0.2でお気に入りユーザを追加できるようにした。お気に入りユーザはツリービューに追加され、それをクリックするとその人のTweet一覧を見ることができる。お気に入りユーザはTwitterのidに関連付けられてOwatterのサーバに保存されるので、Owatterに…

cygwinにするかLinuxにするか

WindowsでcygwinかLinuxかと思ってらVisual Studioという選択肢が!Visual Studioが使えるなら、Windowsでの開発も大分楽になりそうだ

DirectXで読み込んでみた

メタセコイアで作ったクマをXファイルで保存してDirectXで読み込んでみた。何かが違う気がするが、まぁ、表示はできた。うーん…

初歩的なミス

EBPの初期化ミスでEBP-4に書き込みESP-4から読み取りという部分でアクセスしてる番地が違うことから前回のエントリはミスになってしまったようだ。気をつけないと

文字が表示されない

Text VRAMに文字コードを突っ込んでみたけど文字が表示されなかった。bochsで追いかけてみると、0xB8000をEAXに代入してMOV [EAX], 0x41が実行されていた。ちゃんと実行されてるみたいだけど、何故か表示されない。画面モードが悪いとか? void start(){ cha…

忘れ物

前回のエントリ タイトル:[自作OS]リンクミスで忘れていたことがあった。それはldのオプションに-rを付けることだった。-rを付けたら無事makeが通った。とりあえず原因がわかって良かった

曲面制御無しで作ってみた

前に作ったやつはメタセコイアの曲面制御を使って作ったもので、他のソフトで読み込ませたら、元の立方体で表示されてしまったので、今回は最初から円を使って作ってみた。これで他のソフトで読み込んでも同じ形のままになった。ちょっと前進

リンクミス

ld -m i386pe -n -Ttext 0xC200 -static -o third.exe --start-group OSStart.o GDT.o IO.obj --end-groupcygwinでリンクしたときに以下のエラーが発生。 GDT.c:11: undefined reference to `lgdt'以下のnasmのファイル(IO.asm→IO.obj)とGDT.hとGDT.cがある…

更なる修正 #5

getCodeの文字コードの取得の部分はkeyesberryさんに教えてもらったString#ordを使うことにした def getCode(index = 0) return @memory[@registers[EIP] + index].ord end

MOV AL, 1を実行 #4

MOV AL, 1を実行できるようにしてみた。追加したファイルは以下の通り。またemulator.rbとVM.rbを変更している。 ./vm/instruction/InstructionMap.rb ./vm/instruction/move/MoveRImm8.rb読み込んでいるファイルはadd まずはMoveRImm8.rbから class MoveRIm…

クマ続き

前回の続きを作ってみた。各パーツの大きさのバランスが難しい

さっそく変更 #2

文字列の任意の文字の文字コードの取得方法をsyonbori_techに教えて頂いたので、VMクラスのgetCodeを以下の変更しておく def getCode() return @memory[@registers[EIP]].bytes().to_a()[0] end

最初の準備 #1

とりあえずRubyでx86エミュレータを作ってみる。まず、以下のファイルを作る。 ./emulator.rb ./vm/VM.rb ./vm/register/RegisterIndex.rbまずRegisterIndex.rbから module RegisterIndex EAX = 0 ECX = 1 EDX = 2 EBX = 3 ESP = 4 EBP = 5 ESI = 6 EDI = 7 …

文字コードの取得?

ある文字列の1文字目の文字コードを取得したい場合、1.8の場合は "Hello World!"[0] で良かった気がするけど、1.9でこれやると1文字の文字列が返ってくるようだ。それでsliceなんかも試してみたけど1文字だけのときでも文字列が返ってくるようになったらし…

またまた修正 #3

getCodeをまた修正した def getCode() return @memory[@registers[EIP]].unpack("C")[0] end

無気力が溢れてるぞ!

何度目かのやり直しOS。無気力が溢れすぎて、なかなか進まない。とりあえずGDTRとSegmentDescriptorを宣言した。あと初期化や設定関数を宣言した。setGDTにGDTRを渡しているが、先頭アドレスだけ渡せばいい気がしていたが一応countとindexをチェックしておく…

モデリング練習中

クマ作成中…クマに見えるか?!

初のコミケ参加

コミックマーケット80の2日目、『Javaで作る超簡易x86エミュレータ』という冊子を売るために参加した。サークル参加だったが一般参加もしたことがなく、何をすればいいのかよくわからない状況で参加。とりあえず8:00ぐらいには会場に入り準備をした。隣のサ…

来年の四月から専門学校へ

来年の四月から専門学校へ行くことが決まった。もともと、大学に入る前は専門学校に行ってみたかったものだが親に反対され大学に行くことになった。それで、今になってまた行ってみたくなったのだが、今度は親の反対もなくすんなりいった。今のうちに学費分…

超簡易x86エミュレータ

以下のアセンブリ言語のコードをアセンブラしたものを実行するエミュレータ(アセンブリ言語のコードの更に下)を載せておきます XOR AH, AH MOV AL, 0x03 INT 0x10 MOV SI, MESSAGE MOV AH, 0x0E mloop: MOV AL, [SI] OR AL, AL JE fin INT 0x10 ADD SI, 0x01…

991日目のエントリ

今まで990日分のエントリを書いてきたらしい。エントリ数は1376になっている。あとこれを含めて10日間エントリを書き続ければ1000日分のエントリに到達するようだ。最初のエントリはとりあえず何か書いてみるだった。この頃のブログのタイトルはSwingを使っ…

某イベント用の簡易x86エミュレータ(2)

ちょっと長くなってきた気もするが現時点のものを全部載せてしまおう。 import java.io.FileInputStream; import java.io.BufferedInputStream; import java.io.IOException; public class Emulator{ private byte[] memory; //プログラムを格納するメモリ p…

某イベント用にアセンブリ言語でプログラムを書く(2)

某イベント用のプログラム。JZで条件分岐するというもの。これだけなら楽勝なはず MOV AL, 0x05 CMP AL, 0x05 JZ move16 fin: JMP fin move16: MOV AL, 0x10 JMP fin TIMES 510 - ($ - $$) DB 0 DB 0x55, 0xAA

難しい…

美術は苦手なんだよー

某イベント用の簡易x86エミュレータ(1)

某イベントで作る簡易x86エミュレータを公開しておく。この時点だと、まだフラグも無いし汎用レジスタも4つしか用意してないし、セグメントレジスタが無い。しかもプログラムカウンタは0から始めておくというもの。できるだけわかりやすく説明したいです…は…

買いたい本

最近3Dにはまってる気がするので、これを買いたくなってきた。ただちょっと古い気もするが大丈夫だろう。内容はマルチプレイヤーのFPSのゲームを作ることらしいProgramming A Multiplayer FPS In DirectX (Game Development Series)作者: Vaughan Young出版…

とりあえずモデリング開始

まだ、この程度しかできないけど将来は…