アドレシング・モード (教科書3.8節) アドレシング・モードとは? アクセスしたいオブジェクトに対するアドレスの指定方法 (定数,レジスタ,メモリ番地) 例えば,MIPSの加算命令の場合 プロセッサ レジスタ$s2の値と,レジスタ$s3の値を 加算して、レジスタ$s1に格納する レジスタ・アドレシング $s1 $s2 $s3 $s4 レジスタ add $s1, $s2, $s3 ALU 九州大学工学部電気情報工学科(2006年度) MIPSのアドレシング・モード z レジスタ・アドレシング ¾ レジスタをオペランドとする z ベース相対アドレシング ¾ 命令中に指定した定数とレジスタの和によって,オペランドが記憶され ているデータのメモリ番地を表す z 即値アドレシング ¾ 命令中に指定された定数をオペランドとする z PC相対アドレシング ¾ PCと命令中に指定した定数との和によって,フェッチする命令のメモリ 番地を表す z 擬似直接アドレシング ¾ 命令中の26ビットとPCの上位ビットを連結することによって,フェッチす る命令のメモリ番地を表す 九州大学工学部電気情報工学科(2006年度) レジスタ・アドレシング レジスタをオペランドとする 例)add $s1, $s2, $s3 プロセッサ op rs rt rd ・・・ func レジスタ $s1 $s2 $s3 $s4 レジスタ R形式命令 $s1 $s2 $s3 $s4 ALU 九州大学工学部電気情報工学科(2006年度) ベース相対アドレシング 命令中に指定した定数とレジスタの和によって オペランドが記憶されているデータのメモリ番地を表す I形式命令 例) lw $t1, 8 ($s3) op $t1 rt address 主記憶 プロセッサ レジスタ アドレス オフセット $s1 ベース $s2 $s3 X rs オフセット X X+4 X+8 A[0] A[1] A[2] A[99] 32ビットに符号拡張 ベース レジスタ + メモリ番地 九州大学工学部電気情報工学科(2006年度) 即値アドレシング 命令中に指定された定数をオペランドとする I形式命令 例)addi $s1, $s2, n op rs rt 即値 32ビットに符号拡張 レジスタ *)定数nは16bit の2の補数表現の符号つき整数 ALU 九州大学工学部電気情報工学科(2006年度) PC相対アドレシング PCと命令中に指定した定数との和によって フェッチする命令のメモリ番地を表す 例) bne $s1, $s2, LableA (分岐命令の次命令のPC) PC I形式 00 op rs rt address address を符号拡張 + 00 整列化制約: 命令の 番地は常に4の倍数. 分岐先(Label の番地) 00 九州大学工学部電気情報工学科(2006年度) 擬似直接アドレッシング 命令中の26ビットとPCの上位ビットを連結すること によって,フェッチする命令のメモリ番地を表す 例) j LableA (ジャンプ命令の次命令のPC) PC J形式 分岐先 b31~b28 op b31~b28 b27~b2 00 整列化制約 address address 00 九州大学工学部電気情報工学科(2006年度)
© Copyright 2024 Paperzz