問題タブ [mars-simulator]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
6838 参照

floating-point - MIPS - 一連の整数を単精度浮動小数点数に変換する方法

この問題にアプローチする方法を理解するのに本当に苦労しています。整数と小数の両方のバイナリ表現を取得し、それらを仮数に結合し、符号ビットを先頭に割り当てたいと思いますが、MIPS で実際に実装する方法がわかりません。

少なくとも始めるのを手伝ってくれる人はいますか?

MIPS ハードウェアに浮動小数点レジスタと浮動小数点 ALU がないと仮定します。浮動小数点加算を実行する場合は、整数レジスタ ($0 ~ $31) と整数 ALU を使用する MIPS 整数命令を使用して、ジョブを実行する必要があります。この割り当ての問題では、整数命令と整数レジスタのみを使用して MIPS コードを記述し、2 つの浮動小数点数を加算するプロシージャを実装し、プロシージャを呼び出すメイン関数を記述します。

  1. MIPS プロシージャ toFloat を記述して、浮動小数点数を IEEE 単精度形式に変換します。このプロシージャは、次のように浮動小数点数を表す $a0、$a1、$a2 の 3 つの整数を入力として取ります。浮動小数点数が負です。レジスタ $a1 に格納されている数値は浮動小数点数の整数部分であり、レジスタ $a2 に格納されている数値は浮動小数点数の小数部分です。たとえば、浮動小数点数 -5.25 を表示するには、3 つの入力レジスタに $a0 = 1、$a1 = 5、および $a2 = 25 の数値が含まれている必要があります。小数部分には、div rs rt を使用できます。 25 を 100 で割る命令. 分数は HI レジスタに格納され、mfhi 命令を使用して分数を取得できます。このプロシージャは、3 つの入力数値で表される浮動小数点数に対応する IEEE 単精度パターンを含む v0 を返します。この手順を実行したら、それを使用して入力数値 2.5 および 7.5 を IEEE 単精度形式に変換できます。

  2. MIPS プロシージャprintFloatを記述して、IEEE 単精度形式の数値を出力します。プロシージャの入力は、IEEE 単精度形式の数値である $a0 にあります。このプロシージャは、$a0 に格納されているビット パターンを単純に出力します。ループを使用して各ビットを出力できます。この手順を実行したら、それを使用して入力数値2.5および7.5を浮動小数点形式で出力できます。

  3. プロシージャを呼び出すメイン関数を実装する MIPS プログラムを作成します。このプログラムでは、

    toFloat(0, 2, 5) は 2.5 の浮動小数点形式を生成します。

    toFloat(0, 7, 5) は 7.5 の浮動小数点形式を生成します。

    2.5を印刷するprintFloat

    7.5を印刷するprintFloat

これが私がこれまでに持っているコードです:

http://s7.postimg.org/v39ufikaj/code.png

0 投票する
1 に答える
2791 参照

assembly - 数値の平均を実行中に算術オーバーフロー エラーが発生する - MIPS アセンブリ (MARS)!

配列に入力された 10 個の数値の平均を取得しようとしています。で算術オーバーフローが発生していadd $a2, $a2, $a1ます。

何が間違っているのかわかりません。助けていただければ幸いです。

また、すぐにオーバーフローしないという理由だけで、制限を 2 つの整数に切り替えてみました。整数ではなく、アドレスを一緒に追加しています。これは、なぜオーバーフローし続けるのかについての私の推測です。ただし、アドレスを整数に変更するにはどうすればよいですか?

これが私のコードです。

(コードのフォーマットを修正するために編集 - RobertB)

0 投票する
1 に答える
3080 参照

loops - 繰り返し/終了する単純な yes/no ループ - MIPS アセンブリ (MARS)

b入力を読み取らず、繰り返しまたは終了を決定しない理由がよくわかりません..これが私のコードです。助けていただければ幸いです!

0 投票する
1 に答える
322 参照

assembly - PC での Mips 例外

現在、数学シーケンスを生成するための mips プログラムを開発しようとしています。ただし、PC で Mips 例外が発生し続けます。

0 投票する
1 に答える
922 参照

assembly - MIPS MARS 与えられたテキスト ファイルの crc を計算しています。crc 32 を crc 16 および crc 8 に変更する

最初に、私は mips アセンブリ言語と Stackoverflow を初めて使用することを言わなければなりません。

特定のテキスト ファイルのルックアップ テーブルを使用して crc 32 を計算する mips アセンブリ言語の作業コードがあり、crc 16 と crc 8 を計算するように変更したいと考えています。

crc 32、crc 16、crc 8 のすべてのケースで、ルックアップ テーブルが適切に生成されていることはほぼ確実です。たとえば0xffff、crc 16 の初期化値を変更する必要があることはわかっていますが、それだけでは十分ではありません。問題は、この値を変更した後、このアルゴリズムがルックアップ テーブルから間違ったインデックスを取得することだと思います。

助けてくれてありがとう。

0 投票する
2 に答える
1216 参照

assembly - When to use temporary registers vs saved registers?

Whenever I pass arguments ($a0 or $a1) to a section (label) I reach using jal, does it matter if I use temporary registers (like $t0) instead of saved registers like ($s0) to hold or manipulate the arguments in that section? Is there any risk using one set instead of the other while the section is running?