非情報系インフラエンジニアの情報系お勉強

OS自作、ネットワーク、セキュリティの備忘録

OS自作入門 4日目/30日(画面の出力)

OS自作入門 4日目/30日(画面の出力)

1.はじめに

4日目では、新規のアセンブリ命令及びソースコードの変更点ついて解説を行う。

4日目のコード自体は特に詰まるところはなし。

2.使用したアセンブラの命令

NASKの命令(30日本著者作成のアセンブラ) NASMの命令(今回使用のフリーのアセンブラ) において違いなし

命令 名前 内容
CLI clear interrupt flag interrupt flagを0にする
STI set interrupt flag interrupt flagを立てる
PUSHFD push flags double-word flagをdouble-wordでプッシュする
POPFD pop flags double-word flagをdouble-wordでポップする

3.harib01f

編集箇所は下記の通り

変更前 変更後 内容
[FORMAT "WCOFF"] 削除
[INSTRSET "i486p"] 削除
[BITS 32] 削除
[FILE "naskfunc.nas"] 削除
[SECTION .text] section .textに記載を変更

hrb.osask.jp

解決できていない疑問点

アセンブリで記述した関数をC言語で呼ぶ出す場合、アセンブリ側の関数は、先頭に_を記載しなければいけないが、記載をするとエラーを吐く。
下記のエラーの内容は、io_hltは定義されていないである。この際のアセンブリ側の関数名は_io_hltである。

undefined reference to `io_hlt'
(略)

アセンブリ側の関数名の先頭から_を削除することで解消する。

この問題については、解決次第追記予定。