問題タブ [mips32]
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.
string - MIPS で文字列配列を表示する方法
これは MIPS プログラミングの非常に初心者向けのプログラムで、ユーザーからの入力を取得して画面に入力データを表示しようとしています。しかし、このプログラムを実行すると、「メモリ範囲外エラー」が発生し、データを表示しようとするとプログラムがクラッシュします。このコードのどこが間違っていますか:
よろしく
mips - 1 つの命令を使用して目的のレジスタに配置できるすべてのビット パターンのセット
次の一連の MiniMIPS 命令があるとします。
MiniMips 命令では、レジスタをゼロ ビット パターン (すべてのビットがゼロ) に初期化するなどの一部のアクションで、それを実行できる複数の命令を持つことができます。
私の質問は、特定の命令セットからの単一の命令を使用して、目的のレジスタに配置できるすべてのビットパターンのセットは何ですか。
memory - MIPS 説明: sw
背景
私は現在、宿題のために小さな MIPS プログラムに取り組んでおり、その過程でいくつかの言語を学んでいます。私はこれに非常に慣れていないため、実行している操作の最も基本的な側面でさえ、自分自身に自信がありません。さらに、私のインストラクターは、私たちの課題で疑似コードを使用しないことを主張しています。
割り当て
私の割り当ての質問は次のとおりです。最初の 20 個のビギー数を繰り返し (ループで) 計算し、MIPS メモリ内のベース アドレスが register に格納されてB(i) = 2i + 17i
いる配列にそれらを順次格納するとします。を計算する MIPS コード (完全にコメント付き) を記述してください。B
$s0
B(i), 1 < i < 20
私の解決策
私が現在持っているもの:
私の質問
$s0
現在、何も初期化していないことに気付きましたが、それが問題の原因ではありません。私が混乱しているのは、その値を に2i+17i
戻す方法ですBiggieArray
。sw がどのように機能するかについてのヘルプまたは非常に簡単な説明をいただければ幸いです。
assembly - MIPSプログラミング:ロードアドレス
背景
私は自分のコースの1つでMIPSを学び始めたばかりの学生であり、教授はla
コードでLoad Address()などの疑似命令を使用することを許可していません。宣言された変数のアドレスをコードの後半で使用するためにレジスターに格納する場合、標準命令の正しい使用法の例はどのようになるのでしょうか。
私の解決策
命令で構文エラーが発生しましたが、現在このコードを使用しようとしていますlui
。
私の質問
私が理解していることから、これはArray
に配置されるアドレスになるはず$s0
です。しかし、そうではないように思われるので、私がここで何をすべきかについて誰かが私を助けてくれるだろうかと思います。
arrays - 配列に整数値を追加しますか?
私は MIPS を初めて使用し、ここで何が起こっているのか理解できません。
ワード配列 A に 0、1、2、3、4、5、6、7、8、9 がこの順序で格納されているとします。A の開始アドレスが $s0 にあるとします。次の指示の後、この配列の値は何になりますか?
答えは「c」なのですが、理由がわかりません。これが私の思考プロセスです:
コードの最初の行:
これは整数配列なので、アドレス $s0 に 32 を加えて $t0 に渡すことは、A[8] のアドレスを $t0 に渡すことになります。A[8] 各整数には 4 バイトが必要なため、$s0 に 0 を追加すると A[0] のアドレスになり、$s0 に 4 を追加すると A[1] のアドレスになります。
コードの 2 行目:
0($t0) は $t0 の最初の要素を参照しており (それが何であるかはわかりません)、それをレジスタ $t1 にロードしています。
コードの 3 行目:
$t1 のアドレスは、4($t0) で記号化される $t0 の最初の要素にメモリに格納されます。
繰り返しますが、上記は私の思考プロセスであり、おそらく間違っています
arrays - このMIPSアレイ+ループは何をしていますか?
MIPSは初めてで、コードで何が起こっているのかを正確に理解できますが、提供された回答/解決策を理解していません。どんな助けでも大歓迎です。
次のコードを読み、functが戻った後、配列Aの内容を書き留めてください。
/li>
解決策:最小の違いを見つける
arrays - スタックの成長かどうか?
AC関数f1には100個の要素のローカル整数配列があり、別の関数f2を呼び出します。MIPSに準拠した後、次の説明のうち正しいものはどれですか。(a)この関数が呼び出されると、スタックは正確に100バイト増加します。(b)この関数が呼び出されると、スタックは正確に400バイト増加します。(c)この関数が呼び出されると、スタックは404バイト以上増加します。(d)上記のいずれでもない。
関数f1には整数配列の要素が100個あるため、答えはDだと思います。したがって、各整数は4バイトを使用するため、100バイトが必要です。ただし、関数f2の情報が不足しているのは、f2がスタックに格納されている整数配列を持つ可能性があるためです。関数f2が整数配列を持っているかどうかわからないという事実、そして持っていたとしても、その関数が配列をスタックに格納することを選択したかどうかはわかりません。Dが正解であると思います。関数があるからといって、スタックに含まれている可能性のあるものすべてにスペースを割り当てるとは限らないと考えるのは正しいですか?
ありがとうございました!
assembly - MARsアセンブラでC++プログラムをMipsアセンブリ言語に変換する方法は?
mipsアセンブリ言語に変換されるC++プログラム
Mipsアセンブリ言語プログラム
lw、sw、lb、sbを試し、レジスタ$ t2の値を配列に入れようとしましたが、Marsコンパイラでプログラムをシングルステップ実行するとエラーが発生し続けます。
更新されたMipsアセンブリ言語プログラム
このプログラムを実行すると、次のエラーが発生します。「アドレスが範囲外0x00000004」配列の値を出力して、正しいかどうかを確認したい。
c++ - mips32 のコンパイル エラー
仮想マシンで MIPS32 コードをコンパイルしようとしています。プログラムの残りの部分は C コードで実行されます。問題のあるコードは次のとおりです。
問題は、次のようにコンパイルすると gcc-c-O0 stoogeSort.S で次のエラーが発生することです。
私は何を間違っていますか?これらのエラーが発生するのはなぜですか?
c - MIPS マシン命令を作成し、C から実行する
C と MIPS で自己修正コードを書こうとしています。
後でコードを変更したいので、(インライン アセンブリではなく) 実際のマシン命令を記述して、それらの命令を実行しようとしています。誰かが私に、メモリを malloc し、そこに命令を書き込んで、C 関数ポインタをそこに向けてからジャンプすることができるだろうと言いました。(以下に例を含めます)
私はこれを私のクロス コンパイラ (sourcery codebench ツールチェーン) で試しましたが、うまくいきません (はい、後から考えるとかなりナイーブだと思います)。どうすればこれを適切に行うことができますか?
ここでは、引数が $a0 に渡され、関数の結果が $v0 にあると想定される gcc 呼び出し規約に従います。戻りアドレスが $ra に入れられるかどうかは実際にはわかりません (ただし、コンパイルできないため、まだテストできません。MIPS32 をコンパイルしているため、命令には int を使用します (したがって、32 ビットの int十分なはずです)