私の質問: MIPS プログラミング言語は知っておくと有益ですか?
私は CS の学生で、MIPS に焦点を当てたアセンブリ クラスを受講しています。私は高級言語を書くのはとても快適ですが、Mips には少し落ち込んでいます。
MIPS は、私が本当に集中して完全に把握する必要があるものですか? それは将来私を助けるでしょうか?
ある時点 (90 年代) では、MIPS 由来のプロセッサが世界で最も売れているプロセッサであり、Intel x86 プロセッサの売上を上回っていました。これは、組み込み市場での大きな存在感によるものです。今では ARM ベースのプロセッサがその役割を引き継いでいると思いますが、MIPS を使用する組み込みシステムはまだたくさんあります。
これまでのキャリアで MIPS チップをアセンブラーでプログラムしたことがない場合でも、アセンブリ言語は学習に役立ちます。コンパイラが何を出力しようとしているのかをある程度知っていれば、より効率的な高レベルのコードを書くのに役立ちます。まだ使用されているその他の領域には、コンパイラ (独自の記述)、デバイス ドライバ、およびマルチメディア プログラミング (MMX または SSE を必要とするコードは通常、アセンブラで手動で記述されます) が含まれます。
各 CPU タイプには異なる命令セットがありますが、十分な共通性があり、アセンブリの 1 つの方言 (この場合は MIPS) を学べば、他の方言は簡単に理解できるはずです。
コンピュータの非常に低いレベルを理解することは役に立ちます。たとえば、CPU がある種の「新しいオブジェクト」命令を実行すると言う開発者がいます。もちろん、そのような指示はありません。オブジェクトの管理は、抽象化のいくつかの上位層で行われます。オブジェクトの作成に費用がかかる理由 (または費用がかからない理由) や、保護されたアドレス空間がシステムをより堅牢にする理由を理解できるように、この違いを理解しておくとよいでしょう。
私が学校にいたとき、アセンブリ コースは System/360 命令セットを使用して IBM メインフレームで教えられていました。私のキャリアのどの時点でも、そのようなマシンでの作業に近づいたことはありませんが、CPU がどのように見えるかについての知識は貴重でした.
最近は、MIPS プロセッサを使用した組み込みシステムに取り組んでいます。実際、私はかなりの時間を MIPS アセンブリ リストに費やし、ブート ベクトルと同期プリミティブ用の MIPS アセンブリをいくつか書きました。アセンブリで実際に何も記述しない場合でも、CPU の動作を理解することは依然として重要です。
私は約 2 年前に mips を行うアセンブリ クラスを受講しました。私はゲームボーイ アドバンスのゲームを mips のような asm 言語で書いていることに気付きました。楽しめたとは言えません。
アセンブルされたコードの内部の仕組み (高レベルから低レベルまで) を理解しておくとよいと思いますが。コンピューターが実際にどのように機能するかについて、より理解を深めることができたように感じます。また、自分のアセンブリ言語を設計して、すぐにいくつかの仮想マシンを作成することに抵抗できませんでした:)
MIPS は、アセンブリを学習するのに最適な言語です。プログラムを書く手間を軽減するための汎用レジスタがたくさんあり、RISC アーキテクチャであるため、覚える必要のある命令が少なくなります。
多くの人が言及していない主流の使用法のいくつかは、N64、プレイステーション 1、プレイステーション 2、および PSP がすべて MIPS プロセッサを使用していたことです。
「mips プログラミング言語」とは、MIPS アセンブリ言語を意味すると思います。
アセンブリ言語を学ぶことは有益であり、記述したコードをハードウェア上でどのように実行するかをマッピングするのに役立ちます。これにより、キャッシュ ミス、分岐、順不同の実行、および高レベル コードの記述では考えられないその他の事柄など、より低レベルの問題にさらされる可能性があります。
天気学習 MIPS アセンブリは、あなたが従う予定のキャリアによって異なります。個人的には、x86/x64 (PC で人気があり、PC で C++ や C# を記述した場合に直接適用可能)、PPC (人気が高まっており、ゲーム コンソールで使用され、RISC にもさらされている) または ARM (多くの組み込みデバイスで使用されている) だと思います。携帯電話など) を学習する方がよい場合があります。
アセンブリ言語は常に学ぶ価値があります。おそらく、コンパイラが高級言語コードをアセンブリ コードに変換する方法を教えられたり、見たりすることはありませんが、知識はアセンブリ言語を知ることの最も重要な利点であると言えます。最高の最適化レベルであっても、多くのコンパイラがいかに非効率的であるかは、冷静です。(ほとんどのコンパイラは、マシン コードに進んでリンクするのではなく、要求に応じてアセンブリ コードをダンプします。)
とは言うものの、現在 MIPS を使用している人はほとんどいないため、MIPS asm はおそらく役に立たないでしょう。(SGI は以前は x86/IA-64 チップを使用していましたが、現在はすべて x86/IA-64 チップを使用しています。) アセンブリ言語に魅力を感じ、さらにアセンブリに取り組みたい場合は、ARM 命令セットを学んでください。ARM は MIPS よりも少しだけ複雑であり、事実上すべての携帯電話、スマートフォン、および PDA が ARM チップ (数十のメーカーが製造) を使用しています。iPod は ARM を使用し、(私が思うに) Zune もそうです。
あなたの場合、MIPSは個別指導の補助として使用されていると思います。これはコンピュータサイエンスのクラスであり、コードモンキーツールを提供するのではなく、x86ではなくMIPSのような単純なアーキテクチャで簡単に例示できる幅広い概念を教えようとしています。
それがあなたの「プログラマーのツールボックス」に入ることを期待しないでください。低レベルのコードを書くという実用的な目的のために、後でx86アセンブリ言語を学ぶ方がよいでしょう。
Mips が組み込みシステムに戻ってきたようです。@[sk] は私よりも優れた要約を提供してくれましたが、最近の例があります。
Broadcom は最近、MIPS または ARM チップのいずれかを搭載した Wifi カードを製造しているようです (ドキュメントには一方が記載されており、ファームウェアには他方が記載されています)。ただし、新しいチップでは、すべての機能を有効にして Linux をサポートする作業を待っているところです。(さて、いくつかのドライバーを入手して書いてください:P)
アセンブリを学ぶべき 3 つの理由を次に示します。
3 番目の理由は、断然最も重要です。ハードウェアがどのように機能するかを知ることで、コンピューター サイエンスの理解が大幅に深まり、より優れた開発者になることができます。
私は昨年 MIPS を勉強しました。MIPS は重要な言語ですが、残念なことに、MIPS を使用することはおそらくないでしょう。いくつかの基本を学びますが、他の言語と比較して MIPS には多くの仕事がないため、必要以上に多くを学ぼうとして時間を無駄にしないでください。