
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
ANo.3さんの回答への補足になると思うけど、要点は「遅延分岐」じゃないかな。
MIPSを含む一部のRISCアーキテクチャでは遅延分岐を採用しているので、分岐命令の次の命令は分岐に関わらず実行されます。コード生成ではこれを考慮して遅延スロットに適当な命令を入れることが必要です。

No.3
- 回答日時:
これは、MIPS アーキテクチャを理解しているかどうかを問う問題なのでしょうね。
だから、具体的にコード展開するよりも、変換の際の要点を求められたということでしょうか。
MIPS アーキテクチャにかぎらず、RISCプロセッサは、単純な命令を(おおざっぱに言えば)同時多発的に実行することでスピードを上げるという技術ですから、それに適したコードを生成することは重要です。
その意味で、RISCプロセッサの性能はかなりの部分コンパイラの技術に依存しています。
かくいう私は、MIPS はみたこともないのですが、こんな感じかも。
普通のイメージのアセンブラだと、
for( i=0; i<x; i+=1 )
y+=1;
は、こんな感じに展開されると思います(実際のニーモニックではありません)
i = 0;
L1:
COMPARE i, x
JUMP if GE L2:
y++
i++
goto L1:
L:2
ここで、まず問題になりそうなのは、
COMPARE i, x
JUMP if GE L2:
の2行です。
この2行には依存関係があるので、パイプラインがうまく機能しません。
これを考慮して、
L1:
COMPARE i, x
y++
JUMP if GE L2:
i++
goto L1:
のようにすれば、前後の行で依存関係が無くなり、パイプラインがうまく流れるのかもしれません。
(ただし、普通は y++ が1回余計に実行されてしまうので、このままではだめです)
こんなことを考えることになるのかなとは思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
木偏に「久」
-
過剰なオブジェクト指向脳から...
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
Microsoft Visual Studio Commu...
-
UWSCでMOUSEORG関数が上手く処...
-
Exel VBA 別ブックから該当デ...
-
VSコードでバックスペースキー...
-
access2021 VBA メソッドまたは...
-
延長コードに粘着材はがしスプレー
-
sinカーブの表示のさせ方
-
Excel VBA素人です。VBAで図形...
-
pythonにてseleniumを使うも、...
-
ACCESS2007で環境依存文字へのR...
-
c++自作string型について
-
AccessでReplace関数を使うときに…
-
C言語について。
-
エクセルで最後の文字だけ置き...
-
Excel再起動でアドインのタブが...
-
Outlook 送受信エラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
1、Rstudioで回帰直線を求める...
-
access2003 クエリSQL文に...
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
COBOLの文法
-
VBAでファイルオープン後にコー...
-
変数名「cur」について
-
エクセルに見えない文字(JISX0...
-
オートフィルタで抽出結果に 罫...
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
【VB6】実行ファイルとした後、...
-
Javaの改行について
-
C# コードビハインドについて
-
Excelシート上で右クリックがで...
-
木偏に「久」
おすすめ情報