LoginSignup
1
0

More than 5 years have passed since last update.

メモ:「30日でできる!OS自作入門 」20日目

Posted at

API

1) プログラムの整理
- ファイル検索の関数化
- 各コマンドの関数化、cmd_cls, cmd_dir, cmd_type, cmd_hlt とそれを実行する runcmd
- CONSOLEの構造体追加、sheetとカーソルなどの情報を持つ

2) 一文字表示API
- syscall 的な実装
- あるレジスタに値を入れて関数を呼び出す

[BITS 32]
  MOV AL, 'A'
  CALL 0xbe3
fin:
  HLT
  JMP fin
  • 異常終了

3) 一文字表示API2
- far call は far ret (RETF)

4) アプリケーションの終了
- C から farcall 呼び出せるように関数を追加

スクリーンショット 2018-12-25 0.02.28.png

5) OS バージョンが変わっても変わらない API
- GDT が余ってるので0x40 に登録
- CALL なんとかではなく、INT 0x40で呼び出せる

6) アプリケーションの名は自由に
- hlt と打ったら hlt.hrb を呼びだすじゃなくて、ファイルで呼び出せるようにする
- hlt.nas を hello.nas に (hello.hrb)とコンパイルされる

スクリーンショット 2018-12-25 0.10.39.png

7) レジスタに気をつけよう
- 実は文字列 hello を表示するために、人文字ずつじゃなくて loop 形式にしたら、PUSHAD, POPAD使い必要あった。 おそらくECX が変わっちゃうから。

8) 文字列表示 API
- edx にサブ番号を入れで同じ INT 0x40で受け付ける、文字の表示も、文字列も表示できますね。
- サイズ指定ある文字列表示APIはまだ動いていない

今日は以上

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0