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