web-dev-qa-db-ja.com

どこからx64アセンブリを学ぶのですか?

さて、C++、C#、Javaおよび他の言語を知っているので、次にAssemblyを学ぶことにしましたが、最初からしっかりしたレンガの壁にぶつかったように感じます。正しい方向に私を向ける。

質問は次のとおりです。

  1. Assemblyはハードウェアに依存しており、本はほとんどが古くなっているため、本よりもインターネットからAssemblyを学ぶ方が良いと言われました。本当?

  2. 64ビットCPUを持っていますが、FASMを使用しています(または少なくとも使用しようとしています)。必要なドキュメントはどこにありますか?

  3. 私が見たチュートリアルのほとんどは私のためにも動作しないので、私は完全に混乱しています。ハードウェアの違いが原因ですか?適切なチュートリアルを見つけるにはどうすればよいですか?

  4. 64ビットコンピューターでx86およびx32アセンブリを実行できますか?

  5. あなたはとても親切にしてください、そして私にアセンブリで簡単なプログラムを書いてください(それは私のPCで動作します)コメントの内訳で? Intel Core i5 CPUで64ビットWindows 10を実行しています。お願いします。

36
AlanKalane

これは有効な質問だと思います。アセンブラの最新情報を見つけるのは少し難しいかもしれません。

  1. はい。印刷されたオンラインの多くのリソースは、新しいAMD64(x86_64)ではなく、i386(x86)アセンブラについて説明しています。多くのことが変わりました。関数の引数は以前はスタックで渡されていましたが、現在はレジスタで渡されます。これはUnixとWindowsの両方に適用されます。

    基本的に、必ず64ビットアセンブリについて読んでください。

  2. オンラインマニュアル を試してみませんか。アセンブラは、単純なものに関してはそれほど違いがないことに注意してください。

  3. 私はWindowsを持っていませんが、特定のプログラムで問題が発生した場合は、ここで質問することができます。実際に失敗したプログラムを投稿する必要があります。

  4. はい。ただし、32ビットライブラリに対してリンクし、Win32 APIの32ビットバージョンを使用する必要があります。しかし、あなたが始めているのなら、なぜ1980年代にプログラムを作成して現代の命令セットで作業できるのでしょうか?

  5. this を試してください。

また、、アセンブリでプログラミングする場合は、デバッガを入手することを強くお勧めします。私はうまく機能し、無料のGDBを使用しています。Windowsでは、すばらしいVisual Studioデバッガーを使用できます。

37
jforberg