web-dev-qa-db-ja.com

x86アセンブリに関する正規の本はありますか?

議会に関する本はたくさんあります。ただし、通常はMIPSやARMなど、私が気にしないISAを扱います。私はこれらのアーキテクチャーを扱いません。私がそれらを学ぼうとする理由はありません。

しかし、x86アセンブリの本は...存在しないようです。

たとえば、Windows Portable Executableファイルを生成するおもちゃのコンパイラを作成しようとしているとしましょう。

X86アセンブリに関するベストプラクティス、設計方法、およびその他の役立つ情報を説明するための事実上の標準である本はありますか?その本はどうして特別なのですか?

25
Billy ONeal

大学時代の教科書として x86プロセッサ用のアセンブリ言語 を使用しましたが、非常に理解しやすかったです。私は古い第4版を持っているので、それを第6版と比較し、あまり変化がないことに気付いたので、古いコピーを安く手に入れることができるでしょう。人々は彼のI/Oへの彼自身のライブラリの使用に不満を持っていますが、彼はそれを後の章で「難しい」方法で行う方法をあなたに話します。

18
dboss

移動する明白な場所は、インテルのWebサイトです。ここには、x86アーキテクチャーについて知っておくべきすべてが含まれているダウンロード用のプログラミングおよびリファレンスマニュアルがあります。

ここ: インテル®64およびIA-32アーキテクチャーソフトウェア開発者向けマニュアル

18
Jesper

アートオブアセンブリプログラミング は、x86プログラミングについてかなり優れたリソースです。

x64 ABIドキュメント も役立ちます。 AMDsのWebサイトにあるバージョンへのリンクを見つけようとしていましたが、もう見つからないので、これで解決するはずです。

学習中にかなり[少し]役立つ可能性があるものは、アセンブリで完全なアプリを最初から作成する代わりに、そのほとんどをC(または他のコンパイル済み言語)で作成してから、アセンブリコードのチャンクをそれ。それを行ったら、それを逆にして、アセンブリプログラムを作成し、そこからいくつかのC関数を呼び出します。

編集:タイプミスを修正しました。

9
Orclev

X86アセンブリの学習に非常に適した本は Pentium Processor Optimization Tools です。この本の主な焦点はアセンブリコードの最適化ですが、途中でPentiumアセンブリを教えており、優れた参考書でもあります。

絶版ですが中古を探すのは難しくありません。

「アセンブリコードオプティマイザ」を含むフロッピーディスクが付属しています。実際にコードを最適化するのではなく、パイプラインストールなどの非効率性が存在する場所を指摘するコメント付きリストを生成します。

本に付属するツールは、作者の会社が以前販売していた、より機能的な製品の限定バージョンですが、理由がわからないので、彼らは長い間廃業しています。理由はわかりません。そのようなツールはホットケーキのように売れると思います。

マイクロプロセッサのさまざまなモデルでサポートされている多くのバリアントがあるため、x86は一般に非常に複雑なトピックです。基本がわかったら、ターゲットとする正確なチップについてIntelまたはAMDのデータブックを参照してください。残念ながら、あるモデルのCPUで高速に実行されるコードは、別のチップではそれほど高速ではない可能性があります。

4
Mike Crawford

ウィキブックを試してみませんか- http://en.wikibooks.org/wiki/X86_Assembly 。これは、アセンブリ言語の入門として最適です。

アセンブリの難点は、アセンブリがいかにシンプルであるかを理解し、そのシンプルさを維持する必要があることです。

1
Philip Oakley