低レベルプログラミングの高度な詳細をすべて学びたいので、できるようになりたいです
ありがとう..
低レベルプログラミングの高度な詳細をすべて学びたいので、できるようになりたいです
たぶん、http://my.safaribooksonline.com/でアカウントを取得し、電話のプラグを数週間抜いて、冷蔵庫にJoltとFunyunsを入れ、家族や友人に別れを告げてから、できるだけ多くの本。彼らはあなたが探しているトピックのほとんどをカバーするかなり充実したライブラリをそこに持っています。
あなたが求めているものは、一冊の本にはありません。あなたが言及したことの多くは、さまざまなプロセッサのユーザーマニュアルまたは機能仕様に最もよく記載されています。コア x86 アーキテクチャの理解から始めて、そこから作業を進めることをお勧めします。古い Intel 386 または 486 のマニュアルの 1 つから始めるのがよいでしょう。
この種の情報を提供するウェブサイトを私は知りません。
あなたが始めるための私の個人的なお気に入りの中からいくつかの推奨事項:
「効果的な C++: プログラムと設計を改善する 55 の具体的な方法 (第 3 版)」 -- Scott Meyers
「インサイド・ザ・マシーン」 -- ジョン・ストークス
「ハッカーの喜び」 -- ヘンリー S. ウォーレン
「ソフトウェア最適化クックブック」 -- リチャード・ガーバー
「Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 2A: Instruction Set Reference, AM」(253666-021)
「Intel® 64 and IA-32 Architectures Software Developer's Manual, Volume 2B: Instruction Set Reference, NZ」(253667-021)
私はいつもComputerSystems:A Programmer's Perspective(http://www.amazon.com/Computer-Systems-Programmers-Randal-Bryant/dp/013034074X)がとても良い本だと思っています。コンピュータアーキテクチャに関する大量の情報があり、メモリ管理、コンパイルとリンク(およびリンクエラーのデバッグ方法)、最適化、再配置可能なオブジェクトコード、および方法などのいくつかの低レベルのアーキテクチャ項目について教えてくれました。低レベルからコンピュータサイエンスを研究することについて(たとえば、プロセッサの内部はどのようなものか)。最適化の例からバッファオーバーフローの実装に至るまで、多くの優れた演習があります。インラインアセンブリコードを作成する方法(および機能させる方法)について説明します。架空の(Y86)プロセッサ用のコードの記述に関するセクションもあります。
ただし、注意点の1つは、Intelプロセッサラインに重点を置く傾向があることです(私の意見では)。ARMラインなどの作業ラインにもう少し沿ったものが必要な場合は、上記の他の人からの推奨事項を利用することをお勧めします。
それは少し多すぎて、あなたが学びたいと思っています。:)
基本的な ARM v4 コア アーキテクチャから始めることをお勧めします。理解するのは簡単です。次に 8086 に進み、ARM と x86 の新しいバージョンにビルドアップします。ARM は RISC タイプです。CISCタイプのx86。すべてのプロセッサを学習することはできません。(すべてのプログラミング言語を習得することはできないように) しかし、1 つまたは 2 つの知識があれば、遭遇する他の言語を理解することができます。低レベルのプログラミングについては、オブジェクト指向はあまりありません。したがって、c++ を使用するか c を使用するかは問題ではありません。gxemul や qemu などの完全なシステム シミュレータを入手します。hello world アセンブリ プログラムを実行してみてください - (プロセッサ ランタイム ライブラリを使用せずに - 難しくしたいですか?) SSE、MMX などに関して、他の人があなたを導くことができるかもしれません。
ARM アセンブリ言語とアーキテクチャの仕様については、infocenter.arm.com を参照してください。