Changes between Version 8 and Version 9 of Ex01 MIPSアセンブリの基礎2015


Ignore:
Timestamp:
Apr 12, 2015 11:34:08 AM (11 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Ex01 MIPSアセンブリの基礎2015

    v8 v9  
    108108ソースファイルの読み込みには "load" ボタン、プログラムの実行には "step" ボタンをクリックする。 
    109109 
    110 「.data」で定義される部分をデータセグメントと呼ぶ。各行は「32ビット数値で内容は「19」の変数を定義しそのアドレスを「A」で参照できるようにする」のような意味を持つ。 
     110「.data」で定義される部分をデータセグメントと呼ぶ。各行は「32ビット数値で内容は「19」の変数を定義しそのアドレスを「A」で参照できるようにする」のような意味を持つ。 
    111111 
    112112「.text」で定義される部分をコードセグメントと呼び、これがプログラムの本体になる。各命令の概要を以下に説明する。 
     
    123123 
    124124= 複雑な式の評価 = 
     125代入文の右辺が複雑な場合は式を変換して考えます。 
     126{{{ 
     127A= B * C - 5 
     128}}} 
     129という演算をする場合、右辺は一時的な変数Tempを用いて、 
     130{{{ 
     131Temp = B * C 
     132A = Temp - 5 
     133}}} 
     134と変換できます。 
     135より複雑な式も、このように一時的な変数を導入して分解して、右辺の演算が実装する命令で実行できるようにします。 
     136if文の条件判定の式が複雑な場合も同様に分解します。 
    125137 
     138アセンブラプログラムでは、一時的な変数の役割はレジスタが行います。 
     139しかし、すべての一時的なレジスタを使いきるような場合、一時変数を保持するのにメモリを利用する必要があります。 
     140メモリを利用する場合、swおよびlw命令が必要となり、 
     141実行命令数が増えるので、可能な限りレジスタを効率的に使用するようにします。 
    126142 
     143= 課題1 = 
     1443つの変数と定数を含んだ式「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