• ベストアンサー

デバイスドライバー作りに関する質問

デバイスドライバーでは、アセンブリ言語を使う部分があるとの事で、アセンブリ言語の技術を伸ばす為、デバイスドライバーを作ってみようと思うのですが 実際はどれくらいアセンブリ言語を使うのでしょうか またはデバイスドライバーというのは組み込みの分野ですか?

質問者が選んだベストアンサー

  • ベストアンサー
  • z64423
  • ベストアンサー率53% (26/49)
回答No.1

あんまり使わない、という回答でいいんでしょうか。 ほとんどC言語で、CPUのレジスタのアクセスにCの関数内でインライン・アセンブラ asm() を使うくらいです。 ふつうのI/OデバイスのレジスタへのアクセスはCで書けますから。 Windows ドライバでも、I/Oアクセス用のライブラリ関数が(多分)ありますからそれで事足ります。 アセンブラでないと書けない処理や、Cで書くと間に合わない(時間制約が厳しい)処理のときくらいなんでは。 ふつうのPC(WindowsとかLinuxとか)でも組み込みでも、ハードウェアデバイスがあるかぎり、デバイスドライバはあります。 デバイスドライバだから組み込み、というわけではありません。 ただ、プログラムを書くときの意識は、組み込みに近いと思います。 ちなみに、組み込みの場合でもだいたい同じで、ほとんどCで書きます。 # それがふつうなのかは分からない…、あまり人のコードは見たこと無いので。 Linux や Windows のデバイスドライバの本を本屋で立ち読みしてみるといいと思います。 だいたいどんな感じなのかが分かります。 アセンブラを理解したいのであれば、Cでプログラムを書いて、それがどういうアセンブラコードになるのかを読んで理解したほうがいいのではないでしょうか。

tukai
質問者

お礼

解りやすい回答を有難う御座いました やはり今はあまりアセンブラを使う機会は少ないのですね

その他の回答 (1)

  • terra5
  • ベストアンサー率34% (574/1662)
回答No.2

同じくアセンブラはほとんど使わないと思います。 だいたい#1のかたの回答と同じですね。 組み込み関係で何度かVMEバス上のvxWorksとかpSosとか使いましたが全てCでした。 大体OSサポートの機能で足ります。ハードウェア割り込みも使えますし。 ドライバ無しでVMEバス上のハード使いましたが、メモリマップドIOでしたので、ポインタ使ったアクセスで終わりです。 ただ、起動シーケンス、初期設定等を調べるのにアセンブラのコードを読みましたけど。 今だと組み込み関係、それもpic使うような小さい物でないとアセンブラはほとんど要らないんじゃないかと。 あと、ドライバ作るのはアセンブラより、ハードウェアに近い知識とか、OSがあればそれの細かい機能とか動作とかの方が重要だと思いますが。

関連するQ&A