問題タブ [spim]
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.
mips - 私の次のコードは正しいですか?
コマンドは対応するコメントで正しいですか? 「サイズ」、「配列」、「結果」の意味や、それらをコードに組み込む方法など、mips アセンブリ言語を理解するのに苦労しています。
string - MIPS アセンブリ: フィールド エラーに対して即値が大きすぎます
プロジェクトの一部でユーザーが入力した文字列を保存しようとすると、単にファイルをロードすると、spim で次のエラーが表示されます。
フィールドの即時値が大きすぎます: [0x0040009c]
以下は私のコードです:
さて、これを実行すると、上記のエラーが発生します。しかし、その理由はよくわかりません。文字列が 32 ビットであることが原因でしょうか? 理由についての説明をいただければ幸いです。再度、感謝します!
assembly - Xspim シミュレーター: mtc1 で int を転送する
整数 9 をコプロセッサーに転送し、その平方根の上限を取得してから、この値を転送して出力するコード:
(*) のある行に関する注意: (1) .s の代わりに .d も試しました。(2) ソースレジスタとデスティネーションレジスタを別のものにしてみました ( $f0
to$f2
と back )。
私の結果は 1 です (代わりに発言権を取得した場合は 0)。ただし、*-ed 行をコメントアウトすると、9 が細かく転送され、9 が出力されます。
転送後 (および CPU への転送前) に syscall "print_double" (=3) を追加して、転送された数値を出力すると、非常に小さな正の数値が出力されます。
私の質問:
(a) 何が起こっているのですか?
(b) mtc1
: CPU から転送された整数は double または single として受信されますか? で送り返す前にmfc1
、シングルかダブルか、それとも関係ないか?( などを使って実験しcvt.d.s
ましたが、役に立ちませんでした)
備考: 「コンピュータの構成と設計」(パターソン、ヘネシー) を使用して、楽しみのためにこれを行っています。第 4 版では、mtc1
付録 B.10 に間違った構文があります - と の順序はrd
上記rs
のとおりです。
assembly - MIPS で文字列を読み書きする
文字列を読み取り、その文字列を画面に表示するだけのコードを作成しようとしています。ここに私が書いたコードがあります:
次のエラーが表示されます: spim: (parser) Label is defined for the second time on line 2 of file code.s main : ^ これを修正するにはどうすればよいですか? ありがとう。
c - C Loop から MIPS アセンブリ言語への変換 (不正なアドレス エラー)
文字列の文字を反復処理する単純な MIPS アセンブリ コードを書いています。
指定された部分文字列のインスタンスを見つけます..
まず、c コード:
これは私の MIPS コードの一部です。
ただし、このコードを実行すると、この無限ループが発生します
アドレス エラー:
不正なアドレス エラーが 3 行目と 5 行目から発生していることに気付きました
j_body (ロードバイト命令)。文字列アドレスを初期化したので、これがなぜなのかわかりません
ハプニング...
ここに私の質問があります:
この無限ループが発生するのはなぜですか? (iとjのforループを正しく実装したと思いました)
不正なアドレス エラーが表示されるのはなぜですか??
ありがとう :)
assembly - PC での Mips 例外
現在、数学シーケンスを生成するための mips プログラムを開発しようとしています。ただし、PC で Mips 例外が発生し続けます。
assembly - SPIM - SPIM が再初期化されるまで、レジスタ/メモリの値は保持されますか?
それで、私はクラスのプロジェクトを提出していますが、プログラムの両方の部分が機能しています。
しかし、私は気づいた:
プログラム ( load "p5a.mal"
) をロードし、 で実行するとrun
、動作します。
もう一度入力すると、同じ入力を入力すると、宣言された変数が前回の実行からの値を保持してrun
いることを示す動作が示されます。.text
宣言されている変数の例を次に示します。
たとえばwordcount
、前回の実行で 10 だった場合、2 回目の実行では 20 が出力されます。
これは SPIM の標準的な動作ですか? または、変数を正しくゼロ設定していませんか?
SPIMに「再初期化」コマンドがあることは承知していますが、2回目の実行はとにかく(「再初期化」と入力せずに)機能する必要がありますか?