12ステップOS本について質問

138 views
Skip to first unread message

青山正太郎

unread,
Aug 15, 2015, 9:50:30 PM8/15/15
to KOZOS友の会
はじめまして。

今年の春にこの本を購入して、すぐに最後まで読み通しました。
プログラマを10年やってますが、今まで読んだ技術書の中で一番ためになったと思える本でした。
素晴らしい本をありがとうございます。

いくつか疑問に思った点があるのですが、教えていただけますでしょうか。

1.スタートアップをアセンブラで書かなければならないのは、スタックポインタを
初期化するためでしょうか?もし初期化しなくていいならCで書けるように思うのですが。

2.割込みベクタに登録されたアドレスがアセンブラで書かれており、ROMに書かれているので、
割込みが入るたびにアクセスが入りますよね?一般的にROMはRAMよりアクセスが遅いと書いて
あったので、割込みが入るたびに処理が遅くなるのかと気になります。


よろしくお願い致します。

SAKAI Hiroaki

unread,
Aug 15, 2015, 10:19:42 PM8/15/15
to kozos_t...@googlegroups.com, ko...@kozos.jp
坂井です.はじめまして.

読んでいただきありがとうございます.お役に立てたようならばなによりです.

<a040c76e-4a76-430d...@googlegroups.com>の記事において
aosh...@gmail.comさんは書きました。

>> 1.スタートアップをアセンブラで書かなければならないのは、スタックポインタを
>> 初期化するためでしょうか?もし初期化しなくていいならCで書けるように思うのですが。

基本的な理由としてはそのとおりで,スタックポインタを初期化するためです.
スタックポインタが初期化されていない状態でC言語の関数が呼ばれると,
関数の先頭ではスタックにレジスタを退避するような処理が行われるため,
関数が呼ばれた瞬間に動作がおかしくなる,という原因になります.

それとは別に,書籍としての理由もあります.
書籍中で説明されていますが,以下の3箇所に関しては,アセンブラでないと
書けない部分になります.

・スタートアップ
・割込み処理の入口と出口
・タスクディスパッチ

これらは通常はアセンブラで書かれます.工夫次第ではC言語でも書けるかも
しれませんが,本書は入門書なので,サンプル・プログラムとしては
無理にC言語で書いたりせずに,素直にアセンブラで書く,というポリシーで
書籍を書いています.アセンブラで書かれるべき部分は無理に隠さずに
素直にアセンブラで書くべき,という考えです.

それとは別に参考までにの話ですが,Linuxアプリケーションにもスタートアップは
あります.ただしこちらはLinuxカーネルがスタックポインタを設定した状態で
プロセスを起動するため,スタートアップは最初からC言語で書かれています.

KOZOSの場合は,もしもブートローダーがスタックポインタを設定した状態で
KOZOSのスタートアップを呼ぶような構成になっていれば,KOZOS側での
スタックポインタの設定は必ずしも必要ではなく,やはりC言語でスタートアップを
書くことは可能です.が,先述したように入門書としての目的があるため,
そのようなことはせずにスタートアップはやはりアセンブラで書いています.


>> 2.割込みベクタに登録されたアドレスがアセンブラで書かれており、ROMに書かれているので、
>> 割込みが入るたびにアクセスが入りますよね?一般的にROMはRAMよりアクセスが遅いと書いて
>> あったので、割込みが入るたびに処理が遅くなるのかと気になります。

そのとおりですね.
ただ実際にはキャッシュされると思われるので,極端に遅くなるようなことは
無いかと思います.

ROM上のコードに速度的な問題がある場合には,よく呼ばれるコードは
キャッシュに固定でロードしておくなどが行われる場合があります.
(ただしKOZOSではそのようなことは行っていません)

青山正太郎

unread,
Aug 15, 2015, 10:45:43 PM8/15/15
to KOZOS友の会, ko...@kozos.jp
ありがとうございます。
気になっていた点が晴れてすっきりしました!



2015年8月16日日曜日 11時19分42秒 UTC+9 SAKAI Hiroaki:
坂井です.はじめまして.

読んでいただきありがとうございます.お役に立てたようならばなによりです.

<a040c76e-4a76-430d-849d-688a6b...@googlegroups.com>の記事において
Reply all
Reply to author
Forward
0 new messages