[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]

[OSASK 2595] from OSASK BOARD



このメールは、OSASK伝言板に書き込まれた内容です。
この書き込みに返事を書く場合は、下のURLから書き込みを行なって下さい。


http://www.imasy.or.jp/~mone/osask/index.cgi?REFER=3c0c56db_2db3

From: 川合秀実
Message-ID: 3c0c56db_2db3
Date: 2001/12/04 13:53
Subject: Re: 質問 第8稿「I/Oの事なにょ」

[OSASK 2592]へのレスです。

>I/Oの「どこ」に「なに」を送る「べきか」です(00000000〜FFFFFFFF)
>どこになにが刺さっているかわかんないよ!
>そして、なにを送るべきかわかんないよ!

 僕はある程度分かりますが、しかしこのような質問にまじめに答えていたらそ
のテキストだけで100KBにはなるでしょう。たとえば、PIC(割り込みコントロー
ラー)はマスターがI/Oアドレスの0x0020〜0x0021、スレーブが0x00a0〜0x00a1
に接続されています。ここに何を送るべきかですが、複雑なコマンドがたくさん
あり、このような掲示板で簡単に説明するのは不可能です。

 アドレスが知りたいだけなら、コントロールパネル→システム→デバイスマネ
ージャーで適当なデバイスを選択して(たとえば、システムデバイス→プログラ
ミング可能な割り込みコントローラー)、リソースの欄を見れば、I/Oポートア
ドレスなどが表示されるでしょう。以上はWin95の場合での話です。他のOSの場
合は臨機応変でやってください。

>ほとんどのソースがアスカなのがこまってます。
>アセンブラで丁寧に学びたいよ!

 困ることはないでしょう。アセンブラが読める人にとっては、ASKAは十分に読
みやすいはずです。ASKAが読めてもアセンブラが読めない人はたくさんいるでし
ょうが。ですから迷うことなくアセンブラを勉強してください。

>OPTファイルを見るとモジュール化してあるようで、
>マイクロカーネル風なので

 モジュール化と、マイクロカーネルかどうかとは無関係です。世間の誤解だと
僕は思っています。OSASKはマイクロカーネルとはいえません(モノリシックカ
ーネルでもない)。たとえばLinuxはモノリシックカーネルですが、しっかりと
モジュール化されています。

>各モジュールは予めロードするアドレスを固定すべきだとおもつた。
>それは、改良する度に分岐命令のアドレスを全部訂正する手間がどうかと。

 その訂正の作業を「リンク」というのですが、しかしOSASKではその手間はほ
んのわずかです。実際、osalink0はほとんどバイナリーをいじらずにつなげてい
るだけです。これは、IA-32のセグメンテーションのおかげです。

>BASE.EXEは00000000hにロードするべきで
>各モジュールは00100000h、00200000h、00300000h・・・にするといいかも。

 こういうことをすると貴重なメモリ空間を浪費することになり、ページングテ
ーブルキャッシュを浪費し、速度が落ちるだけでしょう。僕はこの方法は嫌いで
す。セグメンテーションを利用すれば、リミットチェックのおかげでバグは見付
けやすくなりますし、アドレス空間は有効に利用できます。