アセンブリの学習に興味があります。基本的に、異なるCPU間に異なる言語(アセンブリ)があるかどうかを知りたいです。最新のIntelx86プロセッサと1年前のIntelx86プロセッサを使用している場合、アセンブリコードはこれら2台のマシン間で互換性がありますか?他の組み立て手順書全体を学ぶことなく、両方のマシンでそのコードを実行できますか?
2 に答える
最新のIntelx86プロセッサと1年前のIntelx86プロセッサを使用している場合、アセンブリコードはこれら2台のマシン間で互換性がありますか?
はい、ほぼ確実です。シリコンベンダーは、一般的なコンパイラー作成者とソフトウェア開発者の生活を楽にするために、命令セットを比較的安定させようとしています。時々、いくつかの新しい指示が出てきたり、いくつかの古い指示が機能しなくなったりします。しかし、特にIntelでは、それほど頻繁には発生しません。
他の組み立て手順書全体を学ぶことなく、両方のマシンでそのコードを実行できますか?
繰り返しますが、ほぼ確実にそうです。しかし、常に例外があります。インテルのソフトウェア開発者向けマニュアルを読むと面白いかもしれません。
はいといいえ。
大きく異なるプロセッサ用のLinuxオペレーティングシステムのアセンブラはすべてGNU規則に依存しているため、同じです。それらは実際のCPU命令が「のみ」異なります。ラベル、コメント、ディレクティブに関しては同じ規則があります。
反対の見方は、実際のCPU命令がアセンブラー言語間の本質的な違いであるということです。これは、レジスタの名前や提供される操作など、CPUのプロパティに依存します。最新のIntelプロセッサの説明は、合計で数千ページを実行するマルチトームの本です。同様に、Risc Vの説明は数百ページであり、Intelとの調整はありません。他のプロセッサの場合、無関係な観点や矛盾する用語さえも期待できます。
これがばかげていると思うなら、Linux i86(gas)のアセンブラープログラムをMS-Windows i86(masm)に作り直すよりも、Linuxのアセンブラープログラムをたとえばi86からarmに作り直す方が実際にはそれほど労力がかからないと言えます。 )。https://github.com/albertvanderhorst/ciforthにある重要なプログラムの広範なファミリーも参照して ください。