問題タブ [mips]
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 除算
組み込みの除算演算を使用せずに、MIPS で 2 つの符号付き整数の間で除算を実行する方法を誰かが知っているかどうか疑問に思っています。
問題の仕様では、除数レジスタ、ALU、商レジスタはすべて 32 ビット幅で、剰余レジスタは 64 ビットであると言われています。
mips - MIPS: 文字列から英数字以外の文字を削除する
ユーザーが入力した文字列が回文かどうかを判断するプログラムを MIPS で作成中です。作成中の 3 つのサブルーチンがあります。
以下は、コードのメイン ブロックであり、関連情報が続くサブルーチンです。
まず、英数字以外のすべての文字を事前に文字列から削除することになっていますが、削除するように指定された文字に遭遇すると、それ以降のすべての文字が削除されます。
次に、すべての小文字を大文字に変換することになっています。
文字列が回文であるかどうかをチェックする最後のサブルーチンは、現時点では完全にはほど遠いところにあります。PC-SPIM がキャリッジ リターン文字として何を使用するかわからないため、文字列の末尾を見つけるのに苦労しています。
私の問題のほとんどは、ばかげた愚かな何かから生じていると感じているので、どんなに小さなことでも遠慮なく指摘してください。
mips - MIPS クロスコンパイラが NOT 操作でこのように動作するのはなぜですか?
MIPS 命令を作成するためにクロスコンパイラをセットアップしました。
また、C コードを適切にコンパイルします。
しかし、NOT 操作で奇妙なことがわかりました。
次のようなコードを作成すると
そして、「MIPS は NOT 演算を 'nor with zero' に変換する」という教科書で MIPS 命令を勉強しました。
だから私はそれが次のように変換されると思った
しかし、私のコンパイラは変換します
////////////////////////////////////// 私は 'myaccount>> mipsel-でコードをコンパイルしましたunknown-linux-gnu-gcc -S myfilename.c' と入力すると、myfilename.s ファイルが作成されます。
私は何が欠けていますか??
profiler - 組み込みプロファイラー
アプリケーションのプロファイリング/最適化を行うことになっています。mips マシンで実行しているため、valgrind はオプションではありません。ツールの提案、戦術はありますか?
編集:私はもっと詳細を与えるべきだったと思います。私のツールチェーンでは Gprof はサポートされていません。oprofile を試しました。しかし、結果は正しくないようで、コールツリーも取得できませんでした。代替案を探しています。
assembly - MIPSアセンブリのユーザー入力からファイル名を読み取る
ユーザーにファイル名を尋ねるMIPSアセンブリコードを書いています。これにより、ファイルの内容に関する統計が生成されます。
ただし、ファイル名を最初から変数にハードコーディングすると問題なく機能しますが、ユーザーにファイル名の入力を求めると機能しません。
デバッグの結果、プログラムがメモリ内のユーザー入力の最後に0x00文字と0x0a文字(asciitable.comを確認)を追加することを発見しました。そのため、ユーザー入力に基づいてファイルを開きません。
誰かがそれらの余分な文字を取り除く方法、またはユーザーからその名前を取得した後にファイルを開く方法について何か考えがありますか?
これが私の完全なコードです(ユーザーのものからのファイル名を除いては正常に動作しており、誰でも自由に使用できます):
注:MARSシミュレーターを使用していますが、それが異なる場合は
更新:次の手順を記述して呼び出すことにより、問題を解決しました。
mips - MIPSでLSBビットを取得する方法は?
MIPSで、32ビット整数の最下位ビットをチェック/取得する簡単な方法はありますか?これは明らかに奇数に設定されており、整数をチェックするアルゴリズムは奇数であるか、偶数であるかを判断できます。しかし、私はこれを行うためのより良い方法があるのだろうか...
assembly - MSBを1で埋めて2進数をシフトする方法は?
MIPS では、2 進数 (0000) をその MSB を 1 (1000 と次回は 1100 と次回は 1110 など...) で埋めてシフトする方法はありますか?
assembly - MIPS アセンブリで、浮動小数点レジスタに浮動小数点値 X.YZDEF がある場合、小数点以下 2 桁に切り捨てるにはどうすればよいですか?
MIPS の "f" レジスタに値がある場合、これを X.YZDEF から X.YZ に切り詰めるにはどうすればよいですか? おそらく、float から 2 つの int に変換し、それらを表示する必要があります...これはどのように行われますか?
c - MIPS(またはSPIM):浮動小数点数のロード
ここでいくつかのMIPSを学習しようとしている間、私は小さなミニコンパイラに取り組んでいます。これが私の問題です:
MIPSには、次のように機能する命令li(即時ロード)があります。
これにより、100がレジスタ5にロードされます。
しかし、私は今フロートをレジスタにロードする必要があり、それを行う方法を見つけるのに苦労しています... li$5,2.5は機能しないためです。
誰かアドバイスはありますか?
私はCで作業していますが、作業しているfloatの整数表現を取得して(つまり、floatバイナリ表現== intsバイナリ表現)、「整数」をレジスタにロードして、次のように処理できると考えていました。それ以降はフロート。
多分手遅れですが、イムは今立ち往生しています。
assembly - MIPSのジャンプについて質問です
ここで PCGPRLEN-1..28 は何を意味しますか?? この4ビットはどこから来たのですか?