ボクノス

メモリのダンプ

アセンブリで再帰したら激しく便利なんじゃないかと思って、久しぶりにボクノスいじり。アセンブリと再帰の相性は抜群。retの代わりに、jmpを使えば末尾呼び出しの最適化まで出来ちゃう。ステキ。アセンブリ上なら再帰でも、gotoでも、whileだってforだって…

セグメントレジスタのメモ。

Mona本読んでて気になった所。セグメント・・・。ちと理解が足らない所なのでセグメントレジスタについてまとめておこう。まず、セグメントレジスタの特徴。 16ビット時代の遺産。サイズは16ビット。 メモリを1Mバイトに拡張するための苦肉の策。 OS作る人以…

レジスタのダンプ

無性にOS作りたくなってきたので、ちょっとボクノスいじり。(一応、OS自作ブログだし・・・)とりあえす、レジスタのダンプを作ることにしました。これが無いとデバッグ出来ないので。まずはaxのダンプ。 print_hex: pusha mov $4,%cx mov %ax,%dx 1: cmp $0,…

boxnos booting...

うっほぉ。文字列っすよ文字列!movb,movwとかちょっとめんどいです。しかし、ニーモニック(アセンブラ=マシン語)に沿った書き方をするならAT&T方式の方がニーモニックに近い気がします。課題はローカルラベルの指定がよくわからない所かな。あと、asmx86_64 …

カーネルソースコード入手。

今日は珍しく早く帰ってこれました!いえぃ!linux-2.4.27のソースコードを入手しました。2.6からブート部分が変わっているらしいので、今回は2.4です。手元の資料も2.4なので、2.6と対比しながら読んでいければいいかなぁと思います。解凍したら、164.1MBもあ…

boxnos on Fedora

今日はちょっとご機嫌。Fedoraでmakeのテストです。qemu.batを普通にqemuにして、:make@vimBooting from Hard Diskになってますが気にせず・・・ちゃんとhltも効いているようです。OSによってmake環境を切り替えられるようにしたいところです。おしらせ:開発…

文字表示

遊んでいても仕方ないので、やっと前に進みます。 .text .code16 .globl _start _start: put: movb $0x0e, %ah movb $0x42, %al xorw %bx, %bx int $0x10 haltLoop: hlt jmp haltLoop signature: . = _start + 510 .word 0xaa55 Bうは、しょっぱ! ah=0x0e a…

RBIL2HTML

BIOS命令を調べなければ・・・と思いをめぐらせていたら、前に作ったperlスクリプトの存在を思い出しました。 Ralf Browns Interrupt List HTML版 Ralf Brown's Files 原版 HTML版がやたら見難いのですよ。原版もよくわからないフォーマットだし・・・。と怒…

VimでもChangeLogしてみる。

ChangeLogでメモ書きしている人はemacsな人が多いようです。emacsなユーザーに負けてられません!!(対抗意識VimでもChangeLogモードは標準で入っています。とりあえず、~/ChangeLogに作ってみます。 :e ~/ChangeLog <Leader>o お、 2007-01-28 Tanaka <tanaka@main> * |←カーソル</tanaka@main></leader>…

Makefile

やっぱりmake環境を整える事が重要だと思うのですよ。快適コンパイルの第一歩です。 sorce/Makefile boxnosDir = ../ binDir = $(boxnosDir)binary/ asm = as ld = ld strip = strip qemu = qemu.bat all: $(binDir)boot.bin $(MAKEFILE_LIST) $(qemu) $< $(…

awkで合計を出すぞぉ〜

プログラムで何行書いたのか知りたくなるのが世の中の常(いつから?Linuxコマンドフル活用でプログラムの行数を知りたいです。ってことで、道具 find ファイルを探す wc テキストファイルの行数がわかる awk よくわからない とりあえず、findとwcを組みあせ…

やっとボクノス始動!

苦節1ヶ月・・・ハードクラッシュを乗り越え、とりあえず開発環境は揃った気がします。そんなわけで、ボクノスようやく始動です!! boxnos 0.00.01 Makefile all : as boot.S -o boot.obj ld -Ttext=7c00 -o boot.exe boot.obj objcopy -O binary boot.exe…

gasでブート

grubとliloのソースを入手してみたけど、cygwinでコンパイル出来ずorzgrubは、configure: error: LZO library version 1.02 or later is required何処かから入手してこないと駄目っぽい。liloはAS86 LD86が無いと。asとldで代用出来るかどうかは不明。う〜。…

ld: cannot perform PE operations on non PE output file 'a.exe'.

アセンブリ言語の教科書のサンプルをやってみました。 $ ld --oformat binary boot.obj ld: cannot perform PE operations on non PE output file 'a.exe'.Linuxではこの方法でベタバイナリが吐けるらしい。しかし・・・Cygwin版gccのリンカldは何が何でもex…

gasでブート

アセンブリ言語の教科書 P205〜gas+bochsでブートする方法について書いてあった!リンカスクリプトも書いてある!!GJ!!ldのマニュアル長すぎなので、助かりました。これから熟読します。

ブート考

現在のブートソース。 bits 16 org 0x7c00 section .text main: mov si,hello call print jmp halt ; void print(char *si) print: .start mov al, [si] inc si cmp al, 0 je .end call put jmp .start .end: ret ; void put(char al) put: mov bx, 15 ; カ…

グループ参加

ほぼ卒業気味ですが、30日でできる! OS自作入門に参加。はやってねぇ〜

UTF-8(2) m

UTF-8問題はあっさり解決しそうです。 しかもスマートに。m.bat @echo off make %* | nkf -s makeなんて面倒な事を打つのは面倒なので、> m一文字コマンドにはまりそう。 早速Vimに・・・ function! s:M () let l:makeProgram = &makeprg let &makeprg = "m"…

はてな移転?

今までmixiでしたが・・・非公開ではやっぱりつまらない!!ってことで、移転しようかと。ボクノスと言うOSを作ってます。英語だとboxnosです。僕のOS→bokunoos→bokunos→boxnos→ボクノス!正確に言うと今日作り始めました。今までは30日でできるOS自作入門と…