問題タブ [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.
assembly - MIPS ASM を使用して二分木のノードを数えます
高水準言語でこれを行っていた場合、再帰を使用できます...
または繰り返し...
アセンブリでこれらのいずれかの実装を開始する場所がわかりません。再帰がよりエレガントですが、しばしば効率が悪い(末尾再帰の最適化なし)高級言語に似ていますか?
スタックを使用する必要がありますか、それともレジスタのみを変更するループでこれを行うことができますか? ノードが追加されたときにカウンターを保持するだけでなく、実際にノードをカウントする必要があります。
ノードは、2 つのポインタとデータ値を使用してメモリに格納されます。ポインタは、子を格納するメモリ アドレスを参照します。
アプローチに違いがある場合は、QtSpimエミュレーターを使用しています。
また、完成したコード (コードがあれば..) を求めているわけではありません。ツリー トラバーサルがどのように機能するかは知っていますが、アセンブリでどのように行われるかを理解するのに苦労しています。
assembly - j(jump) 命令はメモリ内でどこまでジャンプできますか? (MIPS)
MIPS の j(jump) 命令を考えてみましょう。メモリ内でどこまでジャンプできますか?32ビットでしょうか?説明をお願いできますか。
mips32 - MIPS プロセッサ用のクロスコンパイル
Android プラットフォーム用のアプリケーションを開発しました。ARM プロセッサ用です。正常に動作しています。MIPS(32 ビット) プロセッサで実行されている Android で同じアプリケーションを試してみたいです。アプリケーションをクロスコンパイルしようとしましたが、生成できませんでした。共有ライブラリ.MIPSプロセッサ用にカスタマイズされたMIPS ndkおよびAndroidソースコードを使用しています.静的ライブラリの生成中にエラーは表示されませんが、共有ライブラリの生成中に次のエラーが発生します:
/home/user/android-ndk-r7m/toolchains/mips-linux-android-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/mips-linux-android/4.4.3/.. /../../../mips-linux-android/bin/ld: /home/user/workspace/testing/ccl_obj/libccl.a(teccl_call_initiate.o): `__gnu_local_gp' に対する再配置 R_MIPS_HI16 は使用できません共有オブジェクトを作成するとき。-fPIC で再コンパイル /home/user/workspace/testing/ccl_obj/libccl.a: シンボルを読み取れませんでした: 不正な値 collect2: ld が 1 の終了ステータスを返しました make: * [obj/local/mips-r2/libhello-jni.so ] エラー 1
解決策を提案してください。
ありがとう
assembly - 単精度をミップします(ニュートン法を含む)
私はコンピューターアーチクラスに所属しており、単精度を使用してmipsを実行しています。宿題にはニュートン法の作成が含まれます。必要なすべての関数を記述しましたが、コードの何が問題になっているのか正確に理解できません。また、値を画面に出力する方法も正確にはわかりません。すべての助けは大歓迎です。私がしていることを説明するために、コメントを1行ずつ書いています。
これが私のコードです:
input - MIPSアセンブリに32ビットより大きい整数をロードする
私は学校のプロジェクトに取り組んでおり(MIPSとQTSpimを使用しているという事実だけでは理解できない場合)、私のグループは大きな(128ビット)数値用の計算機を作成することを選択しました。128ビットの数値を操作する方法は知っていますが、問題があるのはユーザー入力です。
教授はそれを行う方法を完全には知らないので、MIPSとQTSpimを使用して128ビット整数をロードする方法があるかどうか誰かが知っていますか?
MIPSレジスタは32ビット整数を保持するため、結果を4つのレジスタに格納する必要がありますが、それを実現する方法はありますか?
ありがとう!
assembly - MIPSでのキャスト
面白い質問があります!
MIPSで記憶ゲームを実装しました。ゲームは、画面に10〜99の数字をランダムに印刷することから始まり、ユーザーに正確な数字を入力するように求めます。ユーザーが数字を正しく入力すると、ゲームは最初の数字と10〜99の間にランダムに生成された2番目の数字を表示して続行します。そして、2つの数字は、3秒の遅延で次々に表示される必要があります。次に、ユーザーは画面に表示された正しい順序で番号を入力するように求められます。ユーザーが2つの数字を正しく入力すると、ゲームは3つの数字、次に4つの数字で続行されます。
これはゲームにとって簡単な夏ですが、ここにあります。
ユーザーが文字「H」を入力すると、プログラムがヒントを与えるアシスタントオプションを追加したいと思います。
これを使用して、数値を取得するユーザーからの入力を取得しました
li $ v0,5
システムコール
これは「整数を読み取ります」が、ユーザーが「H」を入力すると、実行時エラーが発生します。
'H'の値はASCIIで72であり、ユーザーがヒントとして使用する数値として入力しましたが、残念ながら、プログラムが乱数'72'を生成し、ユーザーがそれを入力すると発生する可能性があります。 、それは彼にヒントを与えますが、彼はヒントを望んでいません、彼はただゲームを続けたいだけです
質問:
探しているのは、高級言語でそのようなキャストを行う方法またはトリックです。私は今までこの問題を解決する方法を見つけることができませんでした。
そして、MIPSで画面またはコンソールをクリアする方法はありますか?明らかにそれは記憶ゲームだからです!数字が消えるはずです!
これに関する提案や質問は大歓迎です!
assembly - How to print to the screen from MIPS assembly
I was told this is how to do it but when I run the simulator with the display and keyboard add in I still get not output on the screen. What am I doing wrong?
assembly - グローバル変数を使用して MIPS で関数を作成しますか?
さて、これが機能です。私は teechar と update_frog 関数を完全に作成して動作させています。最初の 2 つの箇条書きは理解できますが、最後の 2 つの箇条書きについてはわかりません。MIPS で最後の 2 つの箇条書きをどのように記述しますか?
ここに機能命令があります:
引数を取らず、文字を返す MIPS 関数フロッガーを書きます (テストを簡単にするため)。次のことを行います。
- teechar を呼び出して文字を読み取ってエコーする c.
- update_frog(c) を呼び出します。
- c がゼロ以外の場合、c をグローバル変数に格納して、ゲームが終了したことと、その終了方法を示します。(もちろん、そのグローバル変数をゼロに初期化する必要があります。)
- cを返します。
これが私のコードです:
申し訳ありませんが、これを行う方法を考えるのに苦労しています:(
valgrind - mips の valgrind
MIPS マシンで valgrind を実行しようとしています。valgrind のクロス コンパイルに成功し、テスト スイートからいくつかのテストを実行しました。しかし、valgrind がコアダンプを作成しようとするたびに、アサーションは失敗します。ファイルcoredump-elf.cから
明らかに、このアサーションは、バイト配列のサイズがvalgrindによって作成されたレジスタの構造体と同じかどうかをチェックします。
しかし、私はこのエラーを乗り越えることができません。
MIPS 32 マシンで valgrind を使用しています。
ありがとう
c - 関数を使用して基本的なメイン プログラムを作成しようとしている
ソースメモリから宛先メモリに単語をコピーする関数を作成しようとしています。
関数を作成しましたが、コードの実行に問題があります。execption 4
エラーとして私に与えています
この関数を呼び出して、メモリ内のアドレス 0x50000 から 0x90000 に 800 ワードをコピーするメイン プログラムを作成したいと考えています。しかし、$a0-$a2 に値を追加してコードを実行すると、機能しません。誰でもそれを修正する方法を知っていますか。(C コードを MIPS に変換しているため、C タグを含めました。
乾杯