- ベストアンサー
ハードウェアアーキテクチャについて知りたい
- C言語の勉強を進めている中で、ハードウェアに近い根幹的な部分について知りたいです。動的メモリの確保や変数のパッキング、インラインアセンブラなどのテクニックに興味があります。
- ハードウェアアーキテクチャの基礎知識やCPUの仕組み、メモリの動作など、ハードウェアに関する根本的な内容を学びたいです。
- ハードウェアに寄り添ったプログラミングのテクニックや、ハードウェアアーキテクチャについての書籍やウェブサイトの情報を教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
まずは、「エキスパートCプログラミング」を読まれると良いかと思います。プログラミングのレベルからコンピュータの扱い方を勉強することが出来ます。 CPUやメモリなど、ハードウェアそのものに関しては、本気なら「コンピュータの構成と設計」通称「パタヘネ」(ヘネパタではない)を読み解くのがベストです。もうちょっとあっさり学びたいようでしたら、CPU系の本でパイプラインの項目がちゃんと書かれているものを選ぶとよいかと思います。 以上二つを学んだ上でなお知りたいことが尽きない場合、Code CompleteやBinary Hacksを読み、実践されていくと良いでしょう。 ある程度のレベルまでは本を読むことも良いのですが、段々、本では足りなくなってきます。あなたの興味は、丁度その境界あたりにあるように見えます。 今ならまだ、手当たり次第C++の本を読み漁ればそれなりに欲しい知識が得られそうですが、半年後は分からないですね。そのときはぜひ、一次資料を探したり自分で実験したり、勉強会で発表したりしてください。 蛇足ですが、個人的には日経BPの「なぜ」シリーズは好きになれません。IP電話は良かったですが、ハズレ本が多すぎます。
その他の回答 (3)
- Interest
- ベストアンサー率31% (207/659)
ついでにもう一つ。 無料で受講できるe-learningの講座でも、こういうのがあります。 Webラーニングプラザ http://weblearningplaza.jst.go.jp/ ここの、情報通信 のカテゴリに、「コンピュータアーキテクチャコース」というコースがあります。 命令セットやメモリアーキテクチャの話が出てきます。ユーザ登録しなくても受講可能です。
- Interest
- ベストアンサー率31% (207/659)
仕事では組み込み系の開発をしています。平たくいえば、マイコンの上で動くプログラムの開発です。 > メモリにしろヒープ領域とスタック領域があるだとか > C言語の入門書には載っていないことがよくあります。 入門書だから載っていないのだと思います。私は、この本でメモリ領域について知りました。 Al Stevens著:C++ Programming Bible, IDG Books India, 2000. (日本語版があるかどうかはわかりません) #pragmaやインラインアセンブラは処理系依存です。私は、H8やSH2というマイコンを使っているので、ルネサスエレクトロニクスのC/C++コンパイラのマニュアルを読みながら覚えました。 http://documentation.renesas.com/jpn/products/tool/rjj10j2552_r0c40008xsw07rum.pdf しかし、Windows上やLinux上で動作するプログラムを開発するのであれば、下手な小細工よりコンパイラの最適化オプションのほうがはるかに強力です。処理速度の向上やメモリ消費量の低減をはかるのであれば、アルゴリズムやデータ構造を工夫したほうがよいでしょう。言い換えれば、プログラミング言語について大体わかったと思ったら、次はアルゴリズムとデータ構造です。 > CPUの仕組みや、メモリの動作や、根本的なことが知りたいです。 こういうものをお望みでしょうか? http://monoist.atmarkit.co.jp/fembedded/column/nakane/nakane03.html http://monoist.atmarkit.co.jp/fembedded/column/nakane/nakane04.html http://monoist.atmarkit.co.jp/fembedded/column/nakane/nakane05.html もっと一般的な話であれば、コンピュータサイエンスの教科書がお勧めです。情報の表現方法、ハードウェア、OS、プログラミング言語、コンピュータシステムの構成などを、広く浅く知ることができます。 知っておくべきキーワードは、こういうところから拾ってみてください。 http://www.ouj.ac.jp/hp/kamoku/H21/kyouyou/B/ningen/s_1542109.html いまならテスト配信中なので、上記の授業を無料で視聴できます。 http://www.u-air.ac.jp/hp/eizou/kamoku/computer.html
- anicicle
- ベストアンサー率36% (129/356)
日経BP社の ・コンピュータはなぜ動くのか ・プログラムはなぜ動くのか のあたり。 ちなみに、上記は本当に「ハードウェア寄り」であって >malloc();などの動的メモリの部分や#pragmaを使って変数のパッキングを弄る方法、 >部分的にアセンブラ命令を書いて処理を軽くするインラインアセンブラなどのテクニック、 >レジスタ上にメモリを確保するregisterをつけて変数を宣言する方法など、 は「ソフトウェア(OSやC言語)寄り」の内容。 >CPUの仕組みや、メモリの動作や、根本的なことが知りたいです。 とはちょっと違う。