ブート考
現在のブートソース。
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 ; カラーコードの指定(先に指定した方がよさげ) mov ah, 0x0e ; 1文字表示 int 0x10 ; BIOSコール ret ; halt loop halt: .start hlt jmp .start ; data hello: db "Hello, boxnos World!!", 0 ; boot trap times 0x01fe-($-$$) db 0 db 0x55,0xaa
う〜前とあんまり変わってない・・・。ふと会社帰りに思ってしまった。
「ブートをGASで書いてみよう!」
残念ながらアセンブラ苦手だし、GASなんて・・・。しかし、OSを作る上でGASは避けて通れない道。GCCでNASM形式アセンブラを吐くことも出来るけど、標準はGASなのですよ。インラインアセンブラを書こうと思ったら、GASと言う選択肢しかない!迷ったときはより困難な道を目指せ(カッコイイ
そんなわけで、ブートをGASで書き直すことにしまっす。まだコレだけしか書いてないし〜。アセンブリ言語の教科書を再読することにします。
- 作者: 愛甲健二
- 出版社/メーカー: データハウス
- 発売日: 2005/07/01
- メディア: 単行本
- クリック: 71回
- この商品を含むブログ (47件) を見る
アセンブラと言えばこの本。良書です。実際にDEBUGコマンドをやってみると、レジスタの様子がわかって楽しいです。文句を付けるとするなら、
- レジスタの説明が足りない。
- リファレンスが見にくい。
Webでも一部読めるので、買う前に一読しておくと幸せです。
3章よむべぇ〜