1. ホーム
  2. assembly

[解決済み] MIPS浮動小数点:SWC1対S.S.

2022-02-16 09:37:10

質問

私は今、次のような仕事をしています。 MIPS アセンブリで、以下の4つの浮動小数点ロード/ストア疑似命令に出くわすことがあります。 l.s , l.d , s.s , s.d . ネットでドキュメントを見つけ、同じことをするように見える4つの "actual"指示があることを理解しました。 lwc1 , ldc1 , swc1 および sdc1 .

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

何かお知りになりたいことがありましたら、よろしくお願いします。

解決方法は?

<ブロッククオート

唯一の疑問は、何が違うのか、ということです。私が見る限り、どちらの命令もまったく同じことをするのです。

はい、おっしゃるとおりです。唯一の違いは、擬似命令が複数の本物の命令に変換される場合です。

<ブロッククオート

擬似はもしかして、読みやすいから存在するのでしょうか?

繰り返しになりますが、そうです。それは なぜ 存在するのです。より表現力のある命令セットであるかのような錯覚に陥ります。引用元 コンピュータの構成と設計 / パターソン & ヘネシー :

<ブロッククオート

... アセンブラは、機械語命令の一般的なバリエーションを、それ自体が命令であるかのように扱うことも可能です。ハードウェアはこれらの命令を実装する必要はありませんが、アセンブリ言語での出現により、翻訳やプログラミングが容易になります。...

あなたの例を考えると、もっと "clear" と言えるでしょう。

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

私にとっては、より読みやすいコードを得るために、ニーモニックに助けられているだけなのです。