2008年6月17日火曜日

【パタヘネ】2章 命令:コンピュータの言葉 (その6)

コツコツ。


  • 2.9 32ビットの即値およびアドレスに対するMIPSのアドレシング方式

    • そろそろ難しくなってくるような。。。
    • 32ビット定数や32ビットアドレスを扱うのは、すべての命令を32ビットで扱うという原則をやぶるが、あると便利。
    • まず、その一般的な対処方法。

      • lui: load upper immediate : 指定したレジスタに、定数の上位16ビットを入れる。
      • これに続き通常の命令を実施することによって、下位16ビットが設定されるとともに、処理が実施される。
      • この分割ロード処理は、コンパイラまたはアセンブラが実施する。
      • MIPSではアセンブラが実施する。

    • beq,bneの分岐先アドレス領域は2^16しかない。これは小さい。
    • 分岐先PC値 = とあるレジスタに格納したベース値 + beqなどの分岐先アドレス領域での指定値、とする。
    • ベース値は、分岐する命令のPC値+4 (次の命令) とする。
    • 命令は全てワード(4バイト)なので、分岐命令では語アドレス指定とする。これで4倍遠くまで分岐できる。
    • このやり方を、PC相対アドレシング、という。
    • なお分岐先アドレスが現在PC値から2^16以上遠い場合は、アセンブラがJ命令を使ったものに展開してくれる。
    • アドレシングモード一覧

      • レジスタ・アドレシング
      • ベース相対アドレシング
      • 即値アドレシング
      • PC相対アドレシング
      • 疑似直接アドレシング




とりあえず、終了。。。
あとはまた今度。

0 件のコメント: