-2

Motorola 68000 を使用して、以下の Java コードをアセンブリ言語のPseudoCodeに変換するにはどうすればよいでしょうか。

if(x > y && y < 100) {
    x++;
    y--;
    } // end if
else if(x < y) {
    x--;
    y++;
    } // end else if
else {
    x=0;
    y=0;
    } // end else

私は正しい軌道に乗っているかもしれないと思います。

IF:
        if(x <= y) goto end if
        if(y <= 100) goto end if
            x++;
            y--;
            goto IF
ELSE IF:
        if(x >= y) goto end else if
            x--;
            y++;
            goto ELSE IF
            x = 0;
            y = 0;
            goto DONE
DONE:
4

1 に答える 1

0

標準の疑似コード形式はありません。とても非公式です。ポイントは、構文に行き詰まることなく、コードの論理構造を明確に示すことです。

アセンブリ用の擬似コードを作成するように言われたことがある場合は、Java コードを大まかに分解して、68k アセンブリでどのようになるかを知りたいと思うでしょう。これはあなたがここから始めたもののようですが、いくつかの間違いを犯しています.

まず、つまりy >= 100

最初の 2 つの if は、すべきgoto ELSE IFではありませんEND IF

する理由はありませんgoto IF。あなたは一度だけそこにいるべきです。Javaコードによると、条件は複数回チェックされることは想定されていません。最初の条件が真の場合にのみ実行され、他の条件が評価されないことを意味するため、goto IFおそらく である必要があります。goto DONE

else 条件にはラベルが必要です。これはあなたが行くべきものですif x >= y

のように ELSE IF にバックトラックする必要はありませんgoto ELSE IF。あなたはおそらくするつもりでしたgoto DONE

あなたの決勝戦goto DONEは冗長です。DONEそれを省略した場合は、それが次の命令であることを考えると、いずれにせよ進んでいたでしょう。

これは大まかに次のようになります (IF ラベルは決して参照されないことに注意してください。見た目のためだけに存在します)。

IF:
  if x <= y 
    goto ELSEIF
  if y >= 100 
    goto ELSEIF
  x++
  y--
  goto DONE
ELSEIF:
  if x >= y 
    goto ELSE
  x--
  y++
  goto DONE
ELSE:
  x = 0
  y = 0
DONE:
于 2012-11-28T06:35:13.940 に答える