9


6

x86オペレーティングシステムでx86アセンブリを実行することはできますか?

最近、プログラムなどをデバッグしやすくするために、基本的なx86アセンブリを試してみる価値があると判断しました。 そこで(約1週間前)x86アセンブリの学習を開始し、その間にコンピューターを8GBのRAMにアップグレードしました。 、それで質問は:

  • x64オペレーティングシステムでx86アセンブリを使用できますか? *エミュレーターで正しく実行されますか? または、x64アセンブリを学習する必要がありますか?

4 Answer


17


_ x64オペレーティングシステムでx86アセンブリを使用することはできますか? エミュレータで適切に実行されますか? _

はい、可能です。適切に動作します。 命令セットアーキテクチャは常に下位互換性があります。

  • x86-64の登録:*

例:ここでは、 rax`が新しい64汎用レジスターであることがわかりますが、下位32ビットの rax`を参照するので `eax`を使用できます。

_ または、x64アセンブリを学習する必要がありますか? _

x86-32アーキテクチャはx86-64のサブセットです。 最初にx86を学んだ後、x86-64アセンブリの新機能を見つけてください。 x86 asmを学習したら。 次に、これは有用なリソースになります:http://www.cs.cmu.edu/~fp/courses/15213-s06/misc/asm64-handout.pdf


11


はい、もちろん。 ほとんどのプログラムはまだ32ビットであり、64ビットWindowsシステムで正常に実行されます。 これらのプログラムは機械語であり、アセンブリと1対1のマッピングがあります(x86アセンブリコードに簡単に分解できます)。


0


私はこの質問を少し自由にしたいと思います(そうするのはかなり関連性があり、ハイジャックされていないようです):x86-32には世界中にたくさんのリソースがあります。 アセンブリレベルで32/64の違いはそれほど多くないようです。 32個の資料の豊富さを考えると、64個のリソースを探し出して、この時点で実際に64個に集中するだけの価値があるか(64を学習したい場合)、または重要な概念的なものはすべて32そして、64ビットレジスターなどだけが本当に重要なのは、単なる教育目的のために32に制限するだけで十分です。

言い換えれば、64対32で実質的に異なる実質的な機構セットの違いはありますか?