問題タブ [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.
assembly - ビット演算 - 2 つの結果を 1 ビットに連結
MARS シミュレーター(Assembly)で宿題をしているのですが、1 つの部分で行き詰まっています。
レジスタに 32 ビット ワードをロードする必要があります。
ビット 0 ~ 7 は青色、ビット 8 ~ 15 は緑色、ビット 16 ~ 23 は赤色を表します。残りのビットはゼロに設定されます。
たとえば、黄色は 0x00ffff00 です。
つまり、メモリ順の BGR0 カラー フォーマット、またはネイティブ エンディアン マシン語の 0RGB です。
宿題は 3 つのタスクに分かれており、私は最後のタスクに取り組んでいます。64 x 64 ピクセルのディスプレイがあります (各ピクセルは 4*4 なので、幅と高さの合計は 256 です)。赤は常に 0 に設定され、緑は 4 * 行の数、青は 4 * 列の数です。2 行 3 行にあると想像してください。緑の値は 2*4 で、青の値は 3*4 です。したがって、この例では、16 進数で 12 は 0xc、8 は 0x08 になり、レジスタにロードする数値は 0x00000c08 になります。
私の最初の質問は、ビット代数を使用して 2 つの乗算の結果を連結するにはどうすればよいかということです。
そして、私の 2 番目の質問は次のとおりです。最後のピクセルの行と列にいると想像してください: 64 * 4 と 64 * 4.結果は 256 であり、8 ビットだけを使用してその数値を表すことはできないため、おそらくピクセルを使用しないでください。 1 から 64 でも 0 から 63 ですよね?
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 - MARS で動作するように mips-gcc の出力を微調整する
mips-gcc によって生成された MIPS アセンブリ コードは、Mars MIPS シミュレーターでほとんど実行されますが、完全には実行されません。例えば:
- コンパイラは、「jr $31」ではなく「j $31」を生成します。
- コンパイラはテキスト セグメントに .align ディレクティブを配置しますが、これは Mars では許可されていません。
さらに、生成されたアセンブリは、適切に開始および停止するように完全に設定されていません (つまり、最後に sycall 10 がありません)。
これらの問題はすべて、単純なスクリプトで簡単に修正できるようです。しかし、車輪を再発明する前に、私は疑問に思っていました: (1) これらの問題のいくつかを解消する gcc フラグはありますか? (2) 火星で実行できるように mips-gcc の出力を修正する既存のプログラムを知っている人はいますか?
(FWIW、gcc 3.3.6 と 4.6.1 の両方で同じ動作が見られます。)
mips - バイナリ データを MIPS 命令としてデコードする
これら 2 つの MIPS 命令が何であるかを理解するのに苦労しています。
MARS IDE を使用して、これらの命令が何であるかを把握する方法はありますか?
mips - 読み取り用にバイナリ ファイルを開く
mars mips シミュレーターで読み取るためにバイナリ ファイルを開こうとしています。
assembly - MIPSのsyscall8を使用したユーザー入力の確認
syscall 8を使用して、ユーザーが数字(0〜9)のみの有効な入力を入力したかどうかを確認する効率的な方法を見つけるのに苦労しています。
入力の長さは4バイト(1ワード)で、
各バイト(char)が数値かどうかを確認する必要があります。
ループを実行して、そのASCII値が48( '0' ascii decimel value)
よりも小さいか57( '9' ascii decimel value)よりも大きい かどうかを確認しようと考えました。
これはこれを行うための効率的な方法ですか?
もしそうなら、MIPSでそのようなifステートメントを実装する正しい方法は何ですか?
例えば
*注:ループを停止する場所を知るためのフラグがあると仮定します
*編集:これはコードの一部であり、明確にするために:
c++ - 古いバージョンの glibc で SPEC CPU 2006 ベンチマークをコンパイルするにはどうすればよいですか?
SPEC ベンチマークで、私のシステムに存在する glibc バージョン 2.6.1 を、gcc がデフォルトで使用するもの以外に選択するようにするために、誰か助けてくれませんか? プライマリ glibc バージョンは以下です
Spec ベンチマークには、gcc の場所へのパスを指定してコンパイラを選択する構成ファイルがあります。この構成ファイルに変更を加えて、別のフォルダーを指すようにしたいと考えています。
カーネル イメージに glibc 2.6.1 が含まれているシミュレートされたシステムでこのベンチマークを実行したいので、これを行う必要があります。このシミュレートされたシステムは、サイクル精度の高いシステム シミュレータである gem5 を使用してシミュレートされます。
どんな助けでも大歓迎です。ありがとう。
mars-simulator - mips 設定変数の質問
$s0 と $s1 の値を指定して、$t* レジスターに次の値を入れる MIPS コードを作成します。
つまり、$t2 から $t7 までの各レジスターに対して、前の 2 つの $t* レジスター値の合計が格納されます。$s0 および $s1 レジスタには、初期値が含まれています。コードで $s0 と $s1 の値を設定しないでください。代わりに、MARS を使用して手動で設定する方法を学習してください。コードを sum.s に保存します。
だから私はそれがちょうど私がちょうど好きになることを望んでいると思います
等
しかし、$s0 と $s0 の値を私のコードではなく MARS で設定するとはどういう意味でしょうか? MARS が IDE であることは承知していますが、MARS ではどのように変数を設定するのですか?
追加の質問として、MARS でブレークポイントを設定するにはどうすればよいですか? 私はGUIバージョンでそれを行うことができますが、ターミナルを使用することを望んでいます.
assembly - 入力変数の設定
質問:
$s0と$s1の値を指定して、$t*レジスタに次のように配置するMIPSコードを記述します。
つまり、$t2から$t7までのレジスタごとに、前の2つの$t*レジスタ値の合計が格納されます。$s0および$s1レジスタには初期値が含まれています。コードに$s0と$s1の値を設定しないでください。代わりに、MARSを使用して手動で設定する方法を学びます。コードをsum.sに保存します。
難しいことではありません。
... 等々
しかし、最後の部分はどういう意味ですか?「コードに$s0と$s1の値を設定しないでください。代わりに、MARSを使用して手動で設定する方法を学習してください。コードをsum.sに保存してください。」?
assembly - MIPS の平方数
端末で指定された数値が 2 の二乗であるかどうかを確認できるサブルーチンを .asm に作成したいと考えています。
例: 私は数字の 5 を選びました。2^x = 5 ですか? 私のサブルーチンは、除算の残りが 0 か 1 かをチェックするためにいくつかの除算を行います。これにより、5 が 2 の 2 乗であるかどうかがわかります。
たとえば、CI では次のコードを書きました。
アセンブリで同等のものは何ですか?