7

私はアセンブリを含むいくつかの作業を行っていますが、次の4つの浮動小数点ロード/ストア疑似命令にMIPS出くわします:l.s、、、。私はオンラインでいくつかのドキュメントを見つけ、同じことをしているように見える4つの「実際の」命令があることを理解しました:、、、、および。l.ds.ss.dlwc1ldc1swc1sdc1

私の唯一の質問は、違いは何ですか?私が知る限り、両方の命令セットはまったく同じことをします。疑似は読みやすいという理由だけで存在するのでしょうか?

洞察を事前に感謝します。

4

2 に答える 2

10

私の唯一の質問は、違いは何ですか?私が知る限り、両方の命令セットはまったく同じことをします。

はい、あなたが正しい。表示される可能性がある唯一の違いは、疑似命令が複数の「実際の」命令に変換される場合です。

疑似は読みやすいという理由だけで存在するのでしょうか?

繰り返しますが、はい。それが彼らが存在する理由です。それらは、より表現力豊かな命令セットのような錯覚を与えます。コンピューターの構成と設計の引用/Patterson&Hennessy

...アセンブラは、機械語命令の一般的なバリエーションを、それ自体が命令であるかのように扱うこともできます。ハードウェアはこれらの命令を実装する必要はありません。ただし、アセンブリ言語で表示されるため、翻訳とプログラミングが簡単になります。..。

あなたの例を考えると、次のように言う方が「明確」です。

l.s $f2, 24(t1)       # Load Single contained in 24(t1) to $f2

よりも

lwc1 $f2, 24(t1)      # Load Word into Coprocessor 1 from 24(t1) to $f2

だけでなく、あなたはよりよく理解することができます:

move $7, $18        # move contents of $18 to $7

よりも

add $7, $18, $0

私にとっては、ニーモニックによって助けられて、より読みやすいコードを取得できます。

于 2009-07-22T22:45:49.170 に答える
3

実は、

LWC1 is Load Word to Co-processor 1
LDC1 is Load Double Word to Co-processor 1

等...


何だと思いますか、私はこれらを思い出そうとして特許ページをヒットしました。

米国特許5555384-競合する1つの命令を、競合しない3番目の命令と同じパイプラインステージに遅らせることにより、競合する発行済み命令を再スケジュールします。


FPC 20によって実装されるロード命令には、LWC1(図4に示すロードワードコプロセッサ1)と
LDC1(図8に示すロードダブルワードコプロセッサ1 )の2種類があります。

LWC1は、32ビットワードをメモリサブシステムからFPC汎用レジスタにロードします。
LDC1は、64ビットのダブルワードをメモリサブシステムからFPC汎用レジスタにロードします。

それを確認します。
(ところで:サイトにアクセスできない限り、ここで参照されている数字をわざわざ検索しないでください)。

于 2009-07-22T15:30:11.047 に答える