1

質問:

$s0と$s1の値を指定して、$t*レジスタに次のように配置するMIPSコードを記述します。

$t0 = $s0
$t1 = $s1
$t2 = $t0 + $t1
$t3 = $t1 + $t2
...
$t7 = $t5 + $t6

つまり、$t2から$t7までのレジスタごとに、前の2つの$t*レジスタ値の合計が格納されます。$s0および$s1レジスタには初期値が含まれています。コードに$s0と$s1の値を設定しないでください。代わりに、MARSを使用して手動で設定する方法を学びます。コードをsum.sに保存します。

難しいことではありません。

move $t0 $s0 
move $t1, $s1 
add $t2, $t0, $t1    
add $t3, $t1, $t2 

... 等々

しかし、最後の部分はどういう意味ですか?「コードに$s0と$s1の値を設定しないでください。代わりに、MARSを使用して手動で設定する方法を学習してください。コードをsum.sに保存してください。」?

4

1 に答える 1

2

これは、次のような入力セットアップ操作を含めるべきではないことを意味します。

move $s0, 0xBAAD
move $s1, 0xBEEF

(構文が間違っていたらご容赦ください)

代わりに、デバッグまたはテストのためにアセンブリ スクリプトを実行する直前に、MARS IDE がすべての入力パラメーターをオンザフライで自動的に設定するように構成する必要があります。もちろん、これらの auto-set-parameters が持つ値を指定する必要がありますが、ポイントは、テスト入力をハードコーディングする代わりに、簡単に (?) (再) 構成できることを示すことです。

http://courses.missouristate.edu/kenvollmar/mars/サイトを簡単に閲覧しましたが、メモが見つかりません。IDE のドキュメントまたはヘルプ システムがある場合は、そのどこかに記載されている必要があります。

編集:

わかりました、多分私はそれを見つけました。

「ヘルプと情報」からの引用:

表示されているテーブル セルを編集することで、データ セグメント メモリ ワードとほぼすべての MIPS レジスタの内容を変更できます。セルをダブルクリックして編集し、新しい値を入力し終わったら Enter キーを押します。無効な 32 ビット整数を入力すると、INVALID という単語がセルに表示され、メモリ/レジスタの内容は影響を受けません。値は 10 進数または 16 進数 (先頭の「0x」) で入力できます。負の 16 進数値は、2 の補数形式または符号付き形式で入力できます。整数レジスタのうち 3 つ (ゼロ、プログラム カウンタ、戻りアドレス) は編集できないことに注意してください。

したがって、たとえば、値をハードコーディングする代わりに、コードの最初の命令にブレークポイントを設定してプログラムを実行し、そのブレークポイントに到達したら、レジスタを編集して $s0/$s1 に入力値を入力します。それよりも少しいいといいのですが、他に何も見つかりません。

この IDE には「マクロ」機能もあります。そのため、2 つの数値を取得してそれらの 2 つのレジスタに入れる小さなスクリプトを作成できるかもしれません。あるいは、そのようなマクロが既に存在するかもしれません。自分で掘り下げてください、私は自分のボードにこのソフトウェアさえ持っていません:)

于 2013-03-04T21:14:24.310 に答える