
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ランキング
-
MessageBoxで表示される文字列...
-
エクセルに見えない文字(JISX0...
-
1日に1人がこなせるプログラム...
-
ユーザーフォームに2つのコン...
-
MIPSコードへの変換
-
ACCESSユニオンクエリでORDER B...
-
フィルターかけた後、重複を除...
-
access2021 VBA メソッドまたは...
-
Nullの使い方が不正です。
-
Visual BASIC イベント作成しよ...
-
Excelシート上で右クリックがで...
-
JANコードとPOSコードは同じ?
-
【VB6】実行ファイルとした後、...
-
コンボボックス3つを連動させたい
-
Excel VBAについて
-
スキャンコード取得は MapVirtu...
-
C# コードビハインドについて
-
COBOLの文法
-
欠番の抽出について
-
Access DCountでの連番について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
フィルターかけた後、重複を除...
-
1、Rstudioで回帰直線を求める...
-
access2021 VBA メソッドまたは...
-
1日に1人がこなせるプログラム...
-
JANコードとPOSコードは同じ?
-
エクセルに見えない文字(JISX0...
-
変数名「cur」について
-
access2003 クエリSQL文に...
-
Excelシート上で右クリックがで...
-
【VB6】実行ファイルとした後、...
-
COBOLの文法
-
Exel VBA 別ブックから該当デ...
-
JavaScriptの定数名が取り消し...
-
C# コードビハインドについて
-
JIPS-Eコードのコード表について
-
Nullの使い方が不正です。
-
PreviewKeyDownイベントが2回...
-
VBAでファイルオープン後にコー...
-
ユーザーフォームに2つのコン...
-
ACCESSユニオンクエリでORDER B...
おすすめ情報