2011-02-01 15 views
2

Intel Pentium Dコンピュータで8086アセンブリ言語を実行できますか? 私はアセンブリ言語のプログラミングを学んでいます。これは、約16ビットの8086プロセッサのみについて語っている本からです。 Pentium Dのような最新のプロセッサのアセンブリ言語は異なるのですか?8086アセンブリ言語は最新のCPUで動作しますか?

答えて

-1

はい、それはまだ古いオペコードを実行します。あなたのプログラムは命令パイプラインや分岐予測のような最新のPentium機能を利用しません。ペンティアム用に最適化されたコードだけがこれらの機能を利用することができます。

+2

それはまったく間違っています。分岐予測とパイプライン処理の効率を向上させるために最適化することはできますが、古いコードの実行には引き続き使用されます。あなたが使用できないものは、より大きな(32ビット)レジスタ、またはより新しい(MMX/SSE/SSE2 /など)命令セットのようなものです。 –

+0

@Jerry私は修正しました。私はいつも、Pentiumが古い16ビットの8086命令でパイプラインや分岐予測を使用しないと仮定しました - 私はそれが単一のパイプラインだった仮想実行モードを持っていたと思っていましたが、メモリは時々それを行います:P – SRM

+0

@ジェリー:サイズオーバーライドプレフィックスを使用すると、より大きなレジスタとアドレス空間を使用できます。 –

1

最新のプロセッサは、32ビットのアセンブリ言語をサポートしていますが、いくつかの違いがあります。 16ビット(8086)のアセンブリ言語を使用するには、DOSプログラムをアセンブルしてリンクする必要があります(DOSエミュレーションをサポートするOS(32ビットWindows XPなど)で実行する必要があります)。

+0

さらに最新のプロセッサは、64ビットのオペコードと64ビットのアドレスをサポートしています。 – SRM

+0

32ビット版であれ64ビット版であれ、それは重要なWindowsの数値版ではありません。はい、一度8086アセンブリ言語が分かれば、32ビットを学ぶことは、これ以上懸念する必要のない制限を知ることの大部分です(そして、64ビットアセンブリ言語は制限を緩和します)。 –

+0

これは私がしていることです。私はコードを書いて、それをMASMを使ってアセンブルし、それをリンクさせ、Windowsの32ビットWindows XPとラップトップを持つデスクトップのコマンドプロンプトでデバッグします。それで、現代のx86マイクロプロセッサでアセンブリ言語プログラミングを学ぶために現代のマイクロプロセッサの新しい命令とレジスタサイズを加えた8086アセンブリ言語を学ぶ必要がありますか? – KawaiKx

1

はい、その異なる。特に現代のプロセッサは8086のターゲットであるリアルモードの代わりにプロテクトモードで動作します。代わりに、このようなエミュレータをダウンロードすることができます。

http://www.emu8086.com/

+0

私はWindows xpマシン上でデバッグにジャンプし、実行していた古いcomプログラムを思い出しました。ペンティアムは古いオペコードのための仮想実行モードを持っていることを思い出しているようです。そうしないと、CPUが変更されたときにすべてのプログラムを書き直さなければならなくなります。 – SRM

+0

XPでははい、それはありますが、Vists/Win 7にはデバッグプログラムさえありません... –

+0

True、Win 7とVistaはまったく違った獣です。 – SRM

2

これは私がこの質問をしてから学んだことです。アセンブリ言語は常にISA固有です。 x86アセンブリ言語は、x86プロセッサのアセンブリ言語ファミリです。 Intelは1978年にx86 ISAを初めて導入しました。これは16ビットプロセッサ向けのものでした。その後、インテルはより広範なデータバスを備えた新しいプロセッサを開発したので、新しい機能と命令がすべての段階でx86 ISAに追加されました。そう、x86プロセッサの進化で、プログラムに使用されているアセンブリ言語、また拡張され、開発された。私はアセンブリ言語を学んでいるので、8086プロセッサについてのみ語っている本から、より高度なx86プロセッサの新しい機能と新しい命令を知ることはできません。 8086アセンブリ言語のプログラムは、後方互換性のために最新のx86ファミリプロセッサでも動作します。

関連する問題