問題タブ [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 に答える
476 参照

memory-management - Arraylists の動的メモリ割り当て?

MARS エミュレーターで MIPS ISA を使用して midi ファイルを読み取った後、各イベントの再生時に読み取られる配列リストにデコードされたイベントを格納しようとしています。包含データ構造は配列リストであるため、動的に縮小および拡大できる必要があります。

私のスキームでは、各イベントは 2 つの単語として配列に格納されます。これは、配列リストに要素を追加するたびに、リストが 8 バイトずつ大きくなる必要があることを意味します。

私の質問は、割り当て中にサイズがわからない配列に十分なメモリを動的に割り当てるにはどうすればよいですか? この作成されたリストをどのように調べますか?

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

mips - Enterキーを押した後に値を読み取る方法をMarsでMIPSにしますか?

後でメモリに保存できるように値を読み取るにはどうすればよいですか? ユーザーに値を入力してからEnterキーを押して、それらの値を取得して操作できるようにする必要があります。

ありがとうございました

0 投票する
3 に答える
1598 参照

assembly - MARS MIPS アセンブラーがエラーを出す: 拡張 (疑似) 命令またはフォーマットは許可されていません

Mars (MIPS の IDE) で、本当に奇妙なエラーを見つけました。サンプルコードはこんな感じ

エラーメッセージは次のとおりです。

拡張 (疑似) 命令またはフォーマットは許可されていません。設定を参照してください。

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

mips - MARS を使用した MIPS アセンブリ言語

ここでは新しく、アセンブリは初めてです。

私は最初の課題に取り組んでおり、単純に見えますが、まだ MIPS の理解が不足しています。

私の現在の問題は、プロンプトを読み取って整数を出力しようとすることです。疑似命令 (つまり、la、li、...) を使用せずにこれを行う必要があるため、lui、add、addi、sw しか使用できません。私が推測しているアドレスは0x1001です。もう 1 つの質問は、次のアドレスに移動するにはどうすればよいですか?

tl;dr...関数 val3=$s0-$s1+$s2 を計算できなければなりません。ここで、$s0=27、$s1=val1、および $s2=val2 は疑似命令なしです。

これは私のコードの最初の部分に過ぎず、英語でのヘルプ (XD を理解できるように) をいただければ幸いです)

0 投票する
0 に答える
109 参照

assembly - MIPS の行列

ユーザーに 2 つの異なる 3x3 行列に対して 9 つの整数を入力するよう求める MIPS コードを作成しようとしています。出力は行列の積を提供する必要があります。私は MIPS に非常に慣れていないので、コードのどこが間違っているのかについての助けは非常に役に立ちます!

これまでのコードでは、ユーザーは両方の行列に 9 個の整数を入力できますが、出力は提供されません。

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

mips - MIPS のメイン関数から値を返すにはどうすればよいですか?

MIPS で次の C プログラムを書きたいとします。

MARSで次の MIPS コードを試すと、次のようになります。

「無効なプログラム カウンター」エラーが発生します。これは、MARS の main 関数から飛び出せないためと思われます。ということで、以下のように書き換えてみました。

これを実行すると、$v0 レジスタの値は 5 ではなく 10 になります。syscall を機能させるために $v0 レジスタを上書きする必要があったため、これは理解できます。私の質問は、値 5 をこのアプリケーションの呼び出し元に正しく返すために、どこに保存すればよいかということです。

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

assembly - 範囲外の MIPS アドレス (MARS)

文字列と整数の入力を配列に保存してから出力する簡単なコードを作成しようとしています(後でソートする別の部分も追加しますが、これを最初に機能させる必要があります)。

MARS を使用すると、次のようになります: 75 行目: 0x004000e4 でのランタイム例外: アドレスが範囲外 0x00000008 です。コードは正しく読み取られているようで、入力した最初の整数を出力し、最初の文字列を出力しようとするとエラーが発生します。私は mips を初めて使用するので、コードはおそらく本当に悪いものであり、配列の処理に問題があります。私は何を間違っていますか?

編集:Michael answerのおかげで、私が間違っていたことを理解しましたが、正しく行う方法を理解していないようです。このコードを追加してみました

read_string の前ですが、それでも同じエラーが発生します。どうすればいいですか?

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

arrays - MIPS の整数配列 : 配列 [インデックス] を反復値 i に設定しますか?

以下の C++ コードを MIPS に変換する作業を行っています (これは、私が立ち往生しているプログラムのほんの一部です)。$t指定された配列値を取得するようにレジスタを設定する方法の要点は理解していますが、 m 完全に立ち往生

sw、を試しましlwたが、これらを試すたびに、範囲外の例外などのアドレスが表示されます。

誰かがここで何がうまくいかないのか説明できますか? ループが に到達したら、ループの反復ごとにからにpos[count] = i変更する必要があります。の-1を調整する必要があるため、エラーが発生していますか?pos[count]0xffffffff(i)pos[]

私は完全に道に迷っており、この問題に十分に類似した説明を見つけることができませんでした。

(MIPS には非常に多くのタブ付き行があるため、書式設定についてお詫びします。ここに投稿するための書式設定は非常に風変わりです)


同等の C++ コードは次のとおりです。

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

assembly - MIPS アセンブリの Google 対応できないバグ

IDE Mars を使用して R3000 MIPS アセンブリでプログラムを作成しています。私が受けている授業です。タスクは、リンクされたリストを反復処理し、引数で指定された整数より小さい値を持つノードを削除する関数を作成することです。解決策を見つけたと思いますが、テスト中に次のランタイム例外が発生し続けます。

開発者: テキスト セグメントに書き込むには setStatement() を使用する必要があります!0x00000014

このエラーの原因が何なのか、私にはまったくわかりません。グーグルで試してみましたが、リモートで関連するものは何も表示されません。それがアセンブリ コードの問題なのか、それとも Mars IDE の問題なのかさえわかりません。本当に奇妙なことは、同じ状況下であっても、常に表示されるとは限らないことです。エラーが発生した場合は、コードを変更して (通常は syscall の 1 つをコメントアウトして) 実行します。コードを元に戻してもエラーはなくなり、元に戻りません。

関数のコードは次のとおりです。引数は、リンクされたリストの最初のノードのアドレスと、ノードを削除するためのカットオフ値で、それぞれ $a0 と $a1 にあります。