【解決方法】アセンブラで式を計算する


与えられた式を計算する必要があります
F= (A+B)^2*CA
0、1、2、3 アドレスのマシン上で。
アドレス 0 のマシンについてヘルプが必要ですが、他のマシンのコードは正しいですか?

私が試したこと:

0 address machine
     Need help ??????

   1 address machine
       LOAD A
       ADD B
       STORE TEMP
       MUL TEMP
       MUL C
       SUB A
       STORE F

   2 address machine
       MOVE F, A
       ADD F, B
       MUL F, F
       MUL F, C
       SUB F, A

     3 address machine
       ADD F, A, B
       MUL F, F, F
       MUL F, F, C
       SUB F, F, A

解決策 1

私たちは行き詰まっている人々を喜んで助けますが、それは私たちがあなたのためにすべてを行うためにここにいるという意味ではありません。 私たちがすべての仕事を行うことはできません。あなたはこれに対してお金をもらっているか、成績の一部であり、私たちがあなたのためにすべてを行うのはまったく公平ではありません。

したがって、私たちはあなたに仕事をしてもらう必要があります。あなたが行き詰まったときは、私たちがお手伝いします。 それは、あなたが提出できる段階的な解決策を提供するという意味ではありません。
まず、自分が現在どこにいるのか、そしてプロセスの次のステップは何なのかを説明します。 次に、次のステップを実行するために何を試みたか、また実行したときに何が起こったかを教えてください。

現時点では、さまざまな「マシン」について仮定を立てる必要がありますが、それが正しいかどうかはわかりません。私は、特定のプロセッサ (またはプロセッサ ファミリ) を対象としたいくつかの異なる現実世界のアセンブラを理解していますが、それらはすべて異なる方法で動作します。あるコードでは機能しても、別のコードではひどく失敗します。 動作するコードを取得するには、各「マシンタイプ」の「マシンコード定義」として家庭教師が提供したものを読む必要があります。 3 つのコードは機能するように見えますが、これにはかなり大きな前提が含まれており、仮想マシンにはまったく有効ではない可能性があります。
たとえば、私がコーディングできる現実世界のプロセッサ ファミリのうち少なくとも 2 つは乗算命令をまったく持たず、そのうちの 1 つはすべての単一命令に対して条件付き実行を備えています。 これらのアセンブリ コードは、例とは大きく異なるはずです。

開始する際に問題が発生する場合は、次のことが役立つかもしれません。 問題を解決するコードの書き方、初心者ガイド[^]

コメント

タイトルとURLをコピーしました