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