Changes between Version 8 and Version 9 of Ex01 MIPSアセンブリの基礎2015
- Timestamp:
- Apr 12, 2015 11:34:08 AM (11 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Ex01 MIPSアセンブリの基礎2015
v8 v9 108 108 ソースファイルの読み込みには "load" ボタン、プログラムの実行には "step" ボタンをクリックする。 109 109 110 「.data」で定義される部分をデータセグメントと呼ぶ。 。各行は「32ビット数値で内容は「19」の変数を定義しそのアドレスを「A」で参照できるようにする」のような意味を持つ。110 「.data」で定義される部分をデータセグメントと呼ぶ。各行は「32ビット数値で内容は「19」の変数を定義しそのアドレスを「A」で参照できるようにする」のような意味を持つ。 111 111 112 112 「.text」で定義される部分をコードセグメントと呼び、これがプログラムの本体になる。各命令の概要を以下に説明する。 … … 123 123 124 124 = 複雑な式の評価 = 125 代入文の右辺が複雑な場合は式を変換して考えます。 126 {{{ 127 A= B * C - 5 128 }}} 129 という演算をする場合、右辺は一時的な変数Tempを用いて、 130 {{{ 131 Temp = B * C 132 A = Temp - 5 133 }}} 134 と変換できます。 135 より複雑な式も、このように一時的な変数を導入して分解して、右辺の演算が実装する命令で実行できるようにします。 136 if文の条件判定の式が複雑な場合も同様に分解します。 125 137 138 アセンブラプログラムでは、一時的な変数の役割はレジスタが行います。 139 しかし、すべての一時的なレジスタを使いきるような場合、一時変数を保持するのにメモリを利用する必要があります。 140 メモリを利用する場合、swおよびlw命令が必要となり、 141 実行命令数が増えるので、可能な限りレジスタを効率的に使用するようにします。 126 142 143 = 課題1 = 144 3つの変数と定数を含んだ式「S = (A + B - C) | 3」の計算を行うプログラムを作成し、SPIM上でシミュレーションを行ってください。 145 "|" はビットごとの論理和演算です。 146 147 各変数の初期値は以下のように設定してください。 148 149 ||アドレス ||データ(10進数) || 150 ||A || 19 || 151 ||B || 75 || 152 ||C || 10 || 153 ||S || 結果の格納 || 154 155 156
