| 14 | | |
| 15 | | |
| 16 | | == 留意点 1 == |
| 17 | | 以下の表に示された以外の命令は使わないこと。 |
| 18 | | |
| 19 | | ||区分 ||命令 ||例 ||意味 || |
| 20 | | ||算術演算 ||add ||add $1,$2,$3 ||$1=$2+$3 || |
| 21 | | || ||subtract ||sub $1,$2,$3 ||$1=$2-$3 || |
| 22 | | || ||add immediate ||addi $1,$2,100 ||$1=$2+100 || |
| 23 | | ||論理演算 ||and ||and $1,$2,$3 ||$1=$2&$3 || |
| 24 | | || ||or ||or $1,$2,$3 ||$1=$2|$3 || |
| 25 | | || ||and immediate ||andi $1,$2,100 ||$1=$2&100 || |
| 26 | | || ||or immediate ||ori $1,$2,100 ||$1=$2|100 || |
| 27 | | ||データ転送 ||load word ||lw $1,100($2) ||$1=メモリ[$2+100] || |
| 28 | | || ||store word ||sw $1,100($2) ||メモリ[$2+100]=$1 || |
| 29 | | ||条件分岐 ||branch on equal ||beq $1,$2,100 ||if($1==$2) go to PC+4+100 || |
| 30 | | ||比較演算 ||set on less than ||slt $1,$2,$3 ||if($2<$3) $1=1;else $1=0 || |
| 31 | | || ||set less than imm.||slti $1,$2,100 ||if($2<100) $1=1;else $1=0 || |
| 32 | | ||ジャンプ ||jump ||j 10000 ||go to 10000 || |
| 33 | | || ||jump register ||jr $rs ||go to $rs || |
| 34 | | || ||jump and link ||jal 10000 ||go to 10000; $31=PC+4 || |
| 35 | | ||疑似命令 ||load address ||la $1, A ||$1 = Aのアドレス || |
| 36 | | |
| 37 | | これ以外の命令を使うと、後半の演習で設計するMIPSプロセッサでは動作しません。 |
| 38 | | |
| 39 | | レジスタの指定は、$0から$31でも、$zero, $v0, $v1,...でも構いません。 |
| 40 | | 指定があるもの(スタックポインタ,リターンアドレスなど)は、指定通りに使ってください。 |
| 41 | | 以下の課題において、一時的にレジスタを利用する場合は、$8から$15と$24, $25(これらは$t0 - $t9としてもアクセス可能)を使用します。 |
| 42 | | |
| 43 | | $1はアセンブラが使用するので、プログラムでは使用しないでください。 |
| 44 | | |
| 45 | | == 留意点 2 == |
| 46 | | シミュレーションはステップ実行で行うこと。方法については演習の時間に説明する。 |
| 47 | | |
| 48 | | == 留意点 3 == |
| 49 | | 後半の演習で設計するMIPSプロセッサでは、システムコールを実装しないので、exit システムコールは利用できません。 |
| 50 | | プログラムの最後で停止させたいときは、自分自身にジャンプさせ無限ループさせるようなコードを挿入します。 |
| 51 | | |
| 52 | | 例: |
| 53 | | {{{ |
| 54 | | exit: j exit |
| 55 | | }}} |
| 56 | | |
| 57 | | == 留意点 4 == |
| 58 | | 後の演習や課題、レポートで利用するため、作成するプログラムは全て保存しておくこと。 |
| 59 | | |