アドレシング・モード

アドレシング・モード
(教科書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年度)