2011-12-23 16 views
7

例えば、私はWindows 7 64ビットを実行していますが、アセンブリ言語を学習するための最善のリソースのすべてがx86について語っているようです。 x64上にx86を書くことが可能な場合は、これについて最善の方法は何ですか?存在するコンバータはありますか?また、何のための良いリソースは64ビットアセンブリプログラミングですか?x64ビットプロセッサでのx86アセンブリの作成

+1

この質問をご覧ください:http://stackoverflow.com/questions/2352048/assembly-32-bit-vs-64-bit –

答えて

3

x86は間違いなく、最初に学ぶためのアセンブリではありません。もしあなたが学びたい最後のものであれば。チェックアウトhttps://github.com/dwelch67 lsasimは、アセンブリを学習するために設計された命令セットです。 pcemu_samplesはbios/dos呼び出しが削除された、特に8088/86アセンブラを学習するための修正されたpcemu(dosを実行できる8086/88エミュレータ)です。 pcemu_samplesのような8088/86で始まるx86アセンブリに近づくときにはお勧めします(ここではアセンブリ言語に焦点を当て、システムコールではなく)。 dosboxとbochsはdos/biosを使って8088/86プログラムを走らせることができます。その後、32ビットと64ビットの拡張、マルチコア、そしてそのすべてに移行します。

あなたは最後にx86を学ぶことで大きな利益を得ます。 msp430、上記のlsasimのこと、arm、thumb(not thumb2)はすべて良い出発点です。いくつかの異なる命令セットを学習することは、少なからず、あなたに大きな利益をもたらすでしょう。私はあなたに何が起こっているかについての良い可視性を与えるこれらのいくつかのためのシミュレータを持っています、私はあなたが可視性を得ることができるシミュレータを最初にシミュレートすることをお勧めします。

8088/86で始まり386/486に移動してからx64に転送すると、どこにでも働いている指示(sorta)について他の回答が得られるはずです。

4

ほとんどの64ビットオペレーティングシステムでは、問題なく32ビットバイナリを実行できます。あなたの質問は[Windows]というタグが付いているので、あなたはうまくいくはずです。チュートリアルから32ビットバイナリを作成する手順に従うと、結果のバイナリは変更せずに動作するはずです。別のツールチェーンを使用している場合は、64ビットコードではなく32ビットコードを生成するようにアセンブラに指示するフラグを見つける必要があります。

32ビットと64ビットのアセンブリプログラミングの違いはごくわずかです。 64ビットタイプを処理するためのいくつかの新しい改良された命令といくつかの新しいレジスタ名があります。新しいABIもあります。インテルには、すべての可能な指示とその動作方法を記述したソフトウェア開発者マニュアルがあります。

1

x64はほとんどの場合問題なくx86アプリケーションを実行できます。 ABIにはいくつかの違いがありますが、あなたが見ているx86リソースはアセンブリプログラミングを学びたいだけなら、うまくいくはずです。より広範な質問であるアセンブリのプログラミング自体を学ぶために。開始するには、NASMをご覧ください。