狠狠撸

狠狠撸Share a Scribd company logo
東北大学 工学部 機械知能?航空工学科
2017年度 5セメスター?クラスC3 D1 D2 D3
計算機工学
大学院情報科学研究科
鏡 慎吾
http://www.ic.is.tohoku.ac.jp/~swk/lecture/
6. MIPSの命令と動作 ― 演算?ロード?ストア
(教科書6.3節,6.4節
命令一覧は p.113)
2( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
レジスタ間の演算命令
(C言語)
(疑似的な MIPSアセンブリ言語)
c = a + b;
addu $c, $a, $b # $c ← $a + $b
? ただし,変数 a, b, c の内容がそれぞれレジスタ a, b, c に置
かれているとする (「$a」でレジスタaの値を表す)
? 以下,特に断らない限り変数は整数 (int) とする
? #以下は説明用のコメント.アセンブリ言語の一部ではない
? addu をオペコード,$c, $a, $b をオペランドと呼ぶ
? 特に$cを出力オペランド,$a, $bを入力オペランドと呼ぶ
3( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
例
(C言語)
(疑似的な MIPSアセンブリ言語)
e = (a + b) - (c + d);
addu $e, $a, $b # $e ← $a + $b
addu $t, $c, $d # $t ← $c + $d
subu $e, $e, $t # $e ← $e - $t
? レジスタ t のように計算の都合上一時的に使われるレジスタを
一時レジスタ (temporary register) と呼ぶ
? addu, subu の u は unsigned の略である.add 命令,sub 命令も計算内
容は同じだが,オーバフローが起きたときに例外処理が行われる.C言語
では通常オーバフローは無視する
ただし,変数 a~e の内容がそれぞれレ
ジスタ a~e に置かれており,それ以外
にレジスタ t が自由に使えるとする
4( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
資料: 主なレジスタ間演算命令
命令 説明
addu $c, $a, $b $c ← $a + $b (add unsigned の略)
subu $c, $a, $b $c ← $a – $b (subtract unsigned の略)
and $c, $a, $b $c ← $a & $b
or $c, $a, $b $c ← $a | $b
nor $c, $a, $b $c ← ~($a | $b)
xor $c, $a, $b $c ← $a ^ $b
sll $c, $a, $b $c ← $a << $b (shift left logical の略)
srl $c, $a, $b $c ← $a >> $b (shift right logical の略)
slt $c, $a, $b 符号つきで $a < $b ならば $c ← 1; さもなくば $c ← 0
(set on less than の略)
sltu $c, $a, $b 符号無しで $a < $b ならば $c ← 1; さもなくば $c ← 0
(set on less than unsigned)
5( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
MIPSのレジスタ
ここまでは便宜上,レジスタ名として変数名をそのまま用いて来
たが,実際には MIPS には a, b, c などのような名前のレジスタ
は存在しない
実際には,32本のレジスタに 0 ~ 31 の番号がついており,そ
の番号により指定する
addu $10, $8, $9 # $10 ← $8 + $9
? このままではわかりにくいので,次ページのような別名がつい
ている
? 0番レジスタは,常に値0が読み出される特殊なレジスタである
6( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
資料: レジスタ一覧
番号表示 別名 説明
$0 $zero 常にゼロ
$1 $at アセンブラ用に予約
$2, $3 $v0, $v1 関数からの戻り値用
$4 ~ $7 $a0 ~ $a3 関数への引数用
$8 ~ $15 $t0 ~ $t7 (主に)一時レジスタ
$16 ~ $23 $s0 ~ $s7 (主に)変数割り当て用
$24, $25 $t8, $t9 (主に)一時レジスタ
$26, $27 $k0, $k1 OS用に予約
$28 $gp グローバルポインタ
$29 $sp スタックポインタ
$30 $s8 (主に)変数割り当て用
$31 $ra リターンアドレス
7( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
命令フェッチと命令デコードの動作
メモリ
32ビットALU
32x32ビット
レジスタ
PC
命令デコーダ
アドレス(32ビット)
データ(8, 16, 32ビット)
次PC計算
制御回路
mux
mux
mux は選択回路
(1) 命令
読み出し
(2) 命令
デコード
(3) PC ← PC + 4
8( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
レジスタ間演算の動作
メモリ
32ビットALU
32x32ビット
レジスタ
PC
命令デコーダ
アドレス(32ビット)
データ(8, 16, 32ビット)
次PC計算
制御回路
mux
mux
mux は選択回路
(1) レジスタ
読み出し
(3) レジスタ
書き込み
(2) 演算
9( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
レジスタ-即値間の演算命令
(C言語)
(MIPSアセンブリ言語)
y = x + 100;
addu $s1, $s0, 100 # $s1 ← $s0 + 100
? 命令内で直接指定される定数を即値(immediate)と呼ぶ.
? 演算命令は,2つめの入力オペランドとして即値を取れる.
? 1つめは必ずレジスタ.出力オペランドももちろんレジスタ
? 即値を取る addu 命令は,実際には addiu という命令として実行される(ア
センブラが自動的に変換する.SPIMの実行画面にも注目)
? 即値を取る subu 命令は,実際には addiu 命令に符号反転した即値を渡す
ことで実行される.
ただし,変数 x, y の内容がそれぞれレジスタ
s0, s1 に置かれているとする
10( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
例
(C言語)
(MIPSアセンブリ言語)
y = x - 8;
z = 15;
subu $s1, $s0, 8 # $s1 ← $s0 - 8
or $s2, $zero, 15 # $s2 ← 15
ただし,変数 x, y, z の内容がそれぞれレジス
タ s0, s1, s2 に置かれているとする
? 2行目のようにレジスタへの定数代入よく行われるので,li
(load immediate) というマクロ命令でも書けるようになっている.
li $s2, 15 # $s2 ← 15
11( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
資料: 主なマクロ命令
命令 説明
move $a, $b $a ← $b # or $a, $zero, $b と等価
li $a, imm $a ← imm # or $a, $zero, imm と等価
(load immediate)
nop 何もしない # sll, $zero, $zero, $zero と等価
(no operation)
12( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
レジスタ-即値間演算の動作
メモリ
32ビットALU
32x32ビット
レジスタ
PC
命令デコーダ
アドレス(32ビット)
データ(8, 16, 32ビット)
次PC計算
制御回路
mux
mux
mux は選択回路
(1) レジスタ
読み出し
?即値生成
(2) 演算
(3) レジスタ
書き込み
13( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
ロード?ストア命令
? レジスタとメモリアドレスを指定して,相互間でデータ転送を行う
? メモリアドレスの指定方法をアドレッシングモードと呼ぶ
? MIPSの場合,アドレッシングモードは1つしかない
lw $s1, 12($s0) # $s1 ← mem[12 + $s0]
? 操作対象のメモリアドレス(実効アドレス)はレジスタ s0 の値と
定数 12 を加えたもの
? 例えばレジスタ s0 に 10000 が保存されていたとすると,アドレ
ス 10012 から始まる 4 バイト (= 1 ワード) のデータを読み出し,
レジスタ s1 に書き込む
14( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
資料: 主なロード?ストア命令
? 他に,half word 単位や byte 単位のロード命令,ストア命令がある
命令 説明
lw $t, offset($base) $t ← mem[offset + $base]
(load word)
sw $t, offset($base) mem[offset + $base] ← $t
(store word)
15( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
例
(C言語)
(MIPSアセンブリ言語)
c = a + b;
lw $t0, 0($sp) # $t0 ← mem[$sp + 0]
lw $t1, 4($sp) # $t1 ← mem[$sp + 4]
addu $t2, $t0, $t1 # $t2 ← $t0 + $t1
sw $t2, 8($sp) # mem[$sp + 8] ← $t2
0x7ffff008
0x7ffff004
0x7ffff000
sp 0x7ffff000
a
b
c
ただし,各変数は右図のよう
にメモリに割り当てられている
とし,レジスタ t0, t1, t2が自由
に使えるとする.以下同様.
※ 実際のアドレスがいくつになるかは場合により異なる
16( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
例
(C言語)
(MIPSアセンブリ言語)
int i;
int x[3];
/* 中略 */
x[i] = 300;
addu $t0, $sp, 4 # $t0 ← $sp + 4
lw $t1, 0($sp) # $t1 ← mem[$sp + 0]
sll $t1, $t1, 2 # $t1 ← $t1 × 4
addu $t0, $t0, $t1 # $t0 ← $t0 + $t1
li $t2, 300 # $t2 ← 300
sw $t2, 0($t0) # mem[$t0] ← $t2
0x7ffff00c
0x7ffff008
0x7ffff004
0x7ffff000
sp
i
x[0]
x[1]
x[2]
0x7ffff000
17( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
ロード命令の動作
メモリ
32ビットALU
32x32ビット
レジスタ
PC
命令デコーダ
アドレス(32ビット)
データ(8, 16, 32ビット)
次PC計算
制御回路
mux
mux
mux は選択回路
(1) 実効アド
レス計算
(2) メモリ読み出し
18( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
ストア命令の動作
メモリ
32ビットALU
32x32ビット
レジスタ
PC
命令デコーダ
アドレス(32ビット)
データ(8, 16, 32ビット)
次PC計算
制御回路
mux
mux
mux は選択回路
(1) 実効アド
レス計算
(2) メモリ書き込み
例(おまけ):スーパーマリオブラザーズ256W
19( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
ファミリーコンピュータ用ゲーム「スーパーマリオブラザーズ」 (任
天堂, 1985)では,以下のような操作により,通常は 1 ~ 8 までし
か存在しない「ワールド」(ゲーム内のステージの呼称)が,テニス
のプレイヤの位置に応じて最大 256 種類出現する現象が生じた.
? ゲームプレイ中に電源を切らずにゲームカセットをゲーム機本
体から引き抜き,
? 別のゲーム「テニス」(任天堂, 1984)のカセットを挿入してリセッ
トボタンを押し,しばらくプレイした後に,
? 同様にカセットを抜き,スーパーマリオブラザーズに戻してリセッ
トボタンを押し,プレイを開始する.
この事実から推測できることを述べよ.
(2014年度期末試験?改題)
20( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
https://www.youtube.com/watch?v=AXV05nwZtxo
21( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
world 1
map data
world 2
map data
…ワールド番号(0-7) プレイヤ位置(0-255)
マップデータ
開始アドレス
マップデータ
サイズ
Super Mario Bros. Tennis
各ワールドのマップデータ開始アドレス
= マップデータ開始アドレス
+ ワールド番号 × マップデータサイズ
このような不具合は,
バッファオーバランと総称される
22( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
練習問題
1. レジスタ s0 の内容を s1 にコピーする命令を示せ.(ヒント:
レジスタ $zero を活用する.一般に,同じ動作をする命令
は一通りとは限らない)
? この操作はよく使うので,マクロ命令 を用いて
move $s1, $s0 # $s1 ← $s0
と書いてよいことになっている.
2. レジスタ s0 の内容の各ビットを反転した結果を s1 に保存
する命令を示せ.(ヒント: nor と $zero を活用する)
23( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
練習問題 解答例
1. 例えば以下の各命令
or $s1, $s0, $zero
or $s1, $zero, $s0
addu $s1, $s0, $zero
ほか多数
2. 例えば以下の命令
nor $s1, $s0, $zero
24( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
練習問題
lw $t0, 0($sp)
addu $t0, $t0, 3
sw $t0, 0($sp)
lw $t1, 4($sp)
lw $t0, 8($sp)
sll $t0, $t0, $t1
sw $t0, 8($sp)
lw $t0, 12($sp)
slt $t0, $t0, $t1
sw $t0, 12($sp)
4要素の4バイト整数型からなる配列が右図のよ
うにメモリに配置されているとする.x[0] … x[3]
に格納されている値がそれぞれ 1, 3, 5, 7 の状
態から,以下のコードを実行した.実行後の x[0]
… x[3] の値はどうなっているか.
0x7ffff00c
0x7ffff008
0x7ffff004
0x7ffff000
sp
x[0]
x[1]
x[2]
x[3]
0x7ffff000
25( ): 2017 (6)鏡 慎吾 東北大学 計算機工学
練習問題 解答例
lw $t0, 0($sp) # $t0 ← x[0] (= 1)
addu $t0, $t0, 3 # $t0 ← $t0 + 3 (= 1 + 3)
sw $t0, 0($sp) # x[0] ← $t0 (= 4)
lw $t1, 4($sp) # $t1 ← x[1] (= 3)
lw $t0, 8($sp) # $t0 ← x[2] (= 5)
sll $t0, $t0, $t1 # $t0 ← $t0 << $t1 (= 5 << 3)
sw $t0, 8($sp) # x[2] ← $t0 (= 40)
lw $t0, 12($sp) # $t0 ← x[3] (= 7)
slt $t0, $t0, $t1 # $t0 ← ($t0 < $t1) ? 1 : 0
sw $t0, 12($sp) # x[3] ← $t0 (= 0)
結局 x[0] … x[3] は 4, 3, 40, 0 になる.

More Related Content

What's hot (20)

kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14
swkagami
?
kagami_comput2016_05
kagami_comput2016_05kagami_comput2016_05
kagami_comput2016_05
swkagami
?
kagami_comput2016_03
kagami_comput2016_03kagami_comput2016_03
kagami_comput2016_03
swkagami
?
kagami_comput2016_04
kagami_comput2016_04kagami_comput2016_04
kagami_comput2016_04
swkagami
?
kagami_comput2016_13
kagami_comput2016_13kagami_comput2016_13
kagami_comput2016_13
swkagami
?
kagamicomput201701
kagamicomput201701kagamicomput201701
kagamicomput201701
swkagami
?
kagami_comput2016_10
kagami_comput2016_10kagami_comput2016_10
kagami_comput2016_10
swkagami
?
kagamicomput201709
kagamicomput201709kagamicomput201709
kagamicomput201709
swkagami
?
kagamicomput201702
kagamicomput201702kagamicomput201702
kagamicomput201702
swkagami
?
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708
swkagami
?
kagamicomput201712
kagamicomput201712kagamicomput201712
kagamicomput201712
swkagami
?
kagami_comput2016_08
kagami_comput2016_08kagami_comput2016_08
kagami_comput2016_08
swkagami
?
as-2. メモリと CPU
as-2. メモリと CPUas-2. メモリと CPU
as-2. メモリと CPU
kunihikokaneko1
?
as-1. アセンブラ入門
as-1. アセンブラ入門as-1. アセンブラ入門
as-1. アセンブラ入門
kunihikokaneko1
?
诲颈蹿蹿の真髄
诲颈蹿蹿の真髄诲颈蹿蹿の真髄
诲颈蹿蹿の真髄
fuku68
?
翱辫别苍骋尝と行列
翱辫别苍骋尝と行列翱辫别苍骋尝と行列
翱辫别苍骋尝と行列
miyosuda
?
明日使えないすごいビット演算
明日使えないすごいビット演算明日使えないすごいビット演算
明日使えないすごいビット演算
京大 マイコンクラブ
?
kagamicomput201703
kagamicomput201703kagamicomput201703
kagamicomput201703
swkagami
?
kagami_comput2016_09
kagami_comput2016_09kagami_comput2016_09
kagami_comput2016_09
swkagami
?
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7
swkagami
?
kagami_comput2016_14
kagami_comput2016_14kagami_comput2016_14
kagami_comput2016_14
swkagami
?
kagami_comput2016_05
kagami_comput2016_05kagami_comput2016_05
kagami_comput2016_05
swkagami
?
kagami_comput2016_03
kagami_comput2016_03kagami_comput2016_03
kagami_comput2016_03
swkagami
?
kagami_comput2016_04
kagami_comput2016_04kagami_comput2016_04
kagami_comput2016_04
swkagami
?
kagami_comput2016_13
kagami_comput2016_13kagami_comput2016_13
kagami_comput2016_13
swkagami
?
kagamicomput201701
kagamicomput201701kagamicomput201701
kagamicomput201701
swkagami
?
kagami_comput2016_10
kagami_comput2016_10kagami_comput2016_10
kagami_comput2016_10
swkagami
?
kagamicomput201709
kagamicomput201709kagamicomput201709
kagamicomput201709
swkagami
?
kagamicomput201702
kagamicomput201702kagamicomput201702
kagamicomput201702
swkagami
?
kagamicomput201708
kagamicomput201708kagamicomput201708
kagamicomput201708
swkagami
?
kagamicomput201712
kagamicomput201712kagamicomput201712
kagamicomput201712
swkagami
?
kagami_comput2016_08
kagami_comput2016_08kagami_comput2016_08
kagami_comput2016_08
swkagami
?
as-1. アセンブラ入門
as-1. アセンブラ入門as-1. アセンブラ入門
as-1. アセンブラ入門
kunihikokaneko1
?
诲颈蹿蹿の真髄
诲颈蹿蹿の真髄诲颈蹿蹿の真髄
诲颈蹿蹿の真髄
fuku68
?
翱辫别苍骋尝と行列
翱辫别苍骋尝と行列翱辫别苍骋尝と行列
翱辫别苍骋尝と行列
miyosuda
?
kagamicomput201703
kagamicomput201703kagamicomput201703
kagamicomput201703
swkagami
?
kagami_comput2016_09
kagami_comput2016_09kagami_comput2016_09
kagami_comput2016_09
swkagami
?
kagami_comput2015_7
kagami_comput2015_7kagami_comput2015_7
kagami_comput2015_7
swkagami
?

Similar to kagamicomput201706 (20)

厂辩濒の书き方セミナー资料
厂辩濒の书き方セミナー资料厂辩濒の书き方セミナー资料
厂辩濒の书き方セミナー资料
Sadayoshi Ikushima
?
kagamicomput201710
kagamicomput201710kagamicomput201710
kagamicomput201710
swkagami
?
データとは何か
データとは何かデータとは何か
データとは何か
Kenta Suzuki
?
kagamicomput201801
kagamicomput201801kagamicomput201801
kagamicomput201801
swkagami
?
kagamicomput201714
kagamicomput201714kagamicomput201714
kagamicomput201714
swkagami
?
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
MasanoriSuganuma
?
Sql learning
Sql learningSql learning
Sql learning
Sadayoshi Ikushima
?
kagamicomput201807
kagamicomput201807kagamicomput201807
kagamicomput201807
swkagami
?
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
Yuto Takei
?
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
?
搁で骋滨厂ハンズオンセッション
搁で骋滨厂ハンズオンセッション搁で骋滨厂ハンズオンセッション
搁で骋滨厂ハンズオンセッション
arctic_tern265
?
データベースシステム论12 - 问い合わせ処理と最适化
データベースシステム论12 - 问い合わせ処理と最适化データベースシステム论12 - 问い合わせ処理と最适化
データベースシステム论12 - 问い合わせ処理と最适化
Shohei Yokoyama
?
DynamoDB MyNA?JPUG合同DB勉強会 in 東京
DynamoDB   MyNA?JPUG合同DB勉強会 in 東京DynamoDB   MyNA?JPUG合同DB勉強会 in 東京
DynamoDB MyNA?JPUG合同DB勉強会 in 東京
Yuko Mori
?
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and TechniquesLotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Hiroaki Komine
?
衝突判定
衝突判定衝突判定
衝突判定
Moto Yan
?
データサイエンティストに闻く!今更闻けない机械学习の基础から応用まで
データサイエンティストに闻く!今更闻けない机械学习の基础から応用までデータサイエンティストに闻く!今更闻けない机械学习の基础から応用まで
データサイエンティストに闻く!今更闻けない机械学习の基础から応用まで
Shunsuke Nakamura
?
NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp
hiyohiyo
?
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
Masakazu Matsushita
?
厂辩濒の书き方セミナー资料
厂辩濒の书き方セミナー资料厂辩濒の书き方セミナー资料
厂辩濒の书き方セミナー资料
Sadayoshi Ikushima
?
kagamicomput201710
kagamicomput201710kagamicomput201710
kagamicomput201710
swkagami
?
データとは何か
データとは何かデータとは何か
データとは何か
Kenta Suzuki
?
kagamicomput201801
kagamicomput201801kagamicomput201801
kagamicomput201801
swkagami
?
kagamicomput201714
kagamicomput201714kagamicomput201714
kagamicomput201714
swkagami
?
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
0から理解するニューラルネットアーキテクチャサーチ(狈础厂)
MasanoriSuganuma
?
kagamicomput201807
kagamicomput201807kagamicomput201807
kagamicomput201807
swkagami
?
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
[Basic 1] ブロックチェーンと計算機科学 / ブール代数 / 情報理論
Yuto Takei
?
Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)Hello Dark-Side C# (Part. 1)
Hello Dark-Side C# (Part. 1)
Yuto Takei
?
搁で骋滨厂ハンズオンセッション
搁で骋滨厂ハンズオンセッション搁で骋滨厂ハンズオンセッション
搁で骋滨厂ハンズオンセッション
arctic_tern265
?
データベースシステム论12 - 问い合わせ処理と最适化
データベースシステム论12 - 问い合わせ処理と最适化データベースシステム论12 - 问い合わせ処理と最适化
データベースシステム论12 - 问い合わせ処理と最适化
Shohei Yokoyama
?
DynamoDB MyNA?JPUG合同DB勉強会 in 東京
DynamoDB   MyNA?JPUG合同DB勉強会 in 東京DynamoDB   MyNA?JPUG合同DB勉強会 in 東京
DynamoDB MyNA?JPUG合同DB勉強会 in 東京
Yuko Mori
?
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and TechniquesLotus DEvCon 2000 - LotusScript Tips and Techniques
Lotus DEvCon 2000 - LotusScript Tips and Techniques
Hiroaki Komine
?
データサイエンティストに闻く!今更闻けない机械学习の基础から応用まで
データサイエンティストに闻く!今更闻けない机械学习の基础から応用までデータサイエンティストに闻く!今更闻けない机械学习の基础から応用まで
データサイエンティストに闻く!今更闻けない机械学习の基础から応用まで
Shunsuke Nakamura
?
NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp NVMe でハァハァしようよ #sapporocpp
NVMe でハァハァしようよ #sapporocpp
hiyohiyo
?
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
BrainWarsのアーキテクチャ(OpsWorks & DynamoDB編)
Masakazu Matsushita
?

More from swkagami (15)

kagamicomput201814
kagamicomput201814kagamicomput201814
kagamicomput201814
swkagami
?
kagamicomput201813
kagamicomput201813kagamicomput201813
kagamicomput201813
swkagami
?
kagamicomput201812
kagamicomput201812kagamicomput201812
kagamicomput201812
swkagami
?
kagamicomput201811
kagamicomput201811kagamicomput201811
kagamicomput201811
swkagami
?
kagamicomput201810
kagamicomput201810kagamicomput201810
kagamicomput201810
swkagami
?
kagamicomput201809
kagamicomput201809kagamicomput201809
kagamicomput201809
swkagami
?
kagamicomput201808
kagamicomput201808kagamicomput201808
kagamicomput201808
swkagami
?
kagamicomput201805
kagamicomput201805kagamicomput201805
kagamicomput201805
swkagami
?
kagamicomput201804
kagamicomput201804kagamicomput201804
kagamicomput201804
swkagami
?
kagamicomput201803
kagamicomput201803kagamicomput201803
kagamicomput201803
swkagami
?
kagamicomput201802
kagamicomput201802kagamicomput201802
kagamicomput201802
swkagami
?
kagamicomput201713
kagamicomput201713kagamicomput201713
kagamicomput201713
swkagami
?
kagamicomput201711
kagamicomput201711kagamicomput201711
kagamicomput201711
swkagami
?
kagamicomput201705
kagamicomput201705kagamicomput201705
kagamicomput201705
swkagami
?
kagami_comput2016_12
kagami_comput2016_12kagami_comput2016_12
kagami_comput2016_12
swkagami
?
kagamicomput201814
kagamicomput201814kagamicomput201814
kagamicomput201814
swkagami
?
kagamicomput201813
kagamicomput201813kagamicomput201813
kagamicomput201813
swkagami
?
kagamicomput201812
kagamicomput201812kagamicomput201812
kagamicomput201812
swkagami
?
kagamicomput201811
kagamicomput201811kagamicomput201811
kagamicomput201811
swkagami
?
kagamicomput201810
kagamicomput201810kagamicomput201810
kagamicomput201810
swkagami
?
kagamicomput201809
kagamicomput201809kagamicomput201809
kagamicomput201809
swkagami
?
kagamicomput201808
kagamicomput201808kagamicomput201808
kagamicomput201808
swkagami
?
kagamicomput201805
kagamicomput201805kagamicomput201805
kagamicomput201805
swkagami
?
kagamicomput201804
kagamicomput201804kagamicomput201804
kagamicomput201804
swkagami
?
kagamicomput201803
kagamicomput201803kagamicomput201803
kagamicomput201803
swkagami
?
kagamicomput201802
kagamicomput201802kagamicomput201802
kagamicomput201802
swkagami
?
kagamicomput201713
kagamicomput201713kagamicomput201713
kagamicomput201713
swkagami
?
kagamicomput201711
kagamicomput201711kagamicomput201711
kagamicomput201711
swkagami
?
kagamicomput201705
kagamicomput201705kagamicomput201705
kagamicomput201705
swkagami
?
kagami_comput2016_12
kagami_comput2016_12kagami_comput2016_12
kagami_comput2016_12
swkagami
?

Recently uploaded (15)

第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
Matsushita Laboratory
?
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
shomayama0221
?
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
CRI Japan, Inc.
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
Matsushita Laboratory
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
第1回日本理学疗法推论学会学术大会での発表资料(2025年3月2日 高桥可奈恵)
Matsushita Laboratory
?
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
顿贰滨惭2025冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲厂丑颈苍办补飞补.辫诲蹿
Matsushita Laboratory
?
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
自宅でも出来る!!VCF構築-概要編-JapanVMUG Spring Meeting with NEC
shomayama0221
?
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
LoRaWANプッシュボタン PB05-L カタログ A4サイズ Draginoカタログ両面
CRI Japan, Inc.
?
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
【卒业论文】深层学习によるログ异常検知モデルを用いたサイバー攻撃検知に関する研究
harmonylab
?
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
顿贰滨惭2025冲厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援.辫诲蹿
Matsushita Laboratory
?
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
狈辞诲补滨迟蝉耻办颈冲反省観点の分类に基づく试合の振り返り支援システムに関する有用性検証冲顿贰滨惭2025
Matsushita Laboratory
?
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
実はアナタの身近にある!? Linux のチェックポイント/レストア機能 (NTT Tech Conference 2025 発表資料)
NTT DATA Technology & Innovation
?
LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3LF Decentralized Trust Tokyo Meetup 3
LF Decentralized Trust Tokyo Meetup 3
LFDT Tokyo Meetup
?
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
ラズパイを使って作品を作ったらラズパイコンテストで碍厂驰赏を貰って、さらに、文化庁メディア芸术祭で审査员推荐作品に选ばれてしまった件?自作チップでラズパイ...
Industrial Technology Research Institute (ITRI)(工業技術研究院, 工研院)
?
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
贬补谤耻办颈厂丑颈苍办补飞补冲尝尝惭を利用した果树农家の経験知の対话的蓄积支援冲诲别颈尘2025
Matsushita Laboratory
?
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
田中瑠彗,东冈秀树,松下光范「手技疗法指导における动作指示の违いが指圧动作に及ぼす影响」
Matsushita Laboratory
?
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
【卒业论文】尝尝惭を用いた惭耻濒迟颈-础驳别苍迟-顿别产补迟别における反论の効果に関する研究
harmonylab
?
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
空间オーディオを用いたヘッドパスワードの提案と音源提示手法の最适化
sugiuralab
?
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
测距センサと滨惭鲍センサを用いた指轮型デバイスにおける颜认証システムの提案
sugiuralab
?

kagamicomput201706

  • 1. 東北大学 工学部 機械知能?航空工学科 2017年度 5セメスター?クラスC3 D1 D2 D3 計算機工学 大学院情報科学研究科 鏡 慎吾 http://www.ic.is.tohoku.ac.jp/~swk/lecture/ 6. MIPSの命令と動作 ― 演算?ロード?ストア (教科書6.3節,6.4節 命令一覧は p.113)
  • 2. 2( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 レジスタ間の演算命令 (C言語) (疑似的な MIPSアセンブリ言語) c = a + b; addu $c, $a, $b # $c ← $a + $b ? ただし,変数 a, b, c の内容がそれぞれレジスタ a, b, c に置 かれているとする (「$a」でレジスタaの値を表す) ? 以下,特に断らない限り変数は整数 (int) とする ? #以下は説明用のコメント.アセンブリ言語の一部ではない ? addu をオペコード,$c, $a, $b をオペランドと呼ぶ ? 特に$cを出力オペランド,$a, $bを入力オペランドと呼ぶ
  • 3. 3( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 例 (C言語) (疑似的な MIPSアセンブリ言語) e = (a + b) - (c + d); addu $e, $a, $b # $e ← $a + $b addu $t, $c, $d # $t ← $c + $d subu $e, $e, $t # $e ← $e - $t ? レジスタ t のように計算の都合上一時的に使われるレジスタを 一時レジスタ (temporary register) と呼ぶ ? addu, subu の u は unsigned の略である.add 命令,sub 命令も計算内 容は同じだが,オーバフローが起きたときに例外処理が行われる.C言語 では通常オーバフローは無視する ただし,変数 a~e の内容がそれぞれレ ジスタ a~e に置かれており,それ以外 にレジスタ t が自由に使えるとする
  • 4. 4( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 資料: 主なレジスタ間演算命令 命令 説明 addu $c, $a, $b $c ← $a + $b (add unsigned の略) subu $c, $a, $b $c ← $a – $b (subtract unsigned の略) and $c, $a, $b $c ← $a & $b or $c, $a, $b $c ← $a | $b nor $c, $a, $b $c ← ~($a | $b) xor $c, $a, $b $c ← $a ^ $b sll $c, $a, $b $c ← $a << $b (shift left logical の略) srl $c, $a, $b $c ← $a >> $b (shift right logical の略) slt $c, $a, $b 符号つきで $a < $b ならば $c ← 1; さもなくば $c ← 0 (set on less than の略) sltu $c, $a, $b 符号無しで $a < $b ならば $c ← 1; さもなくば $c ← 0 (set on less than unsigned)
  • 5. 5( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 MIPSのレジスタ ここまでは便宜上,レジスタ名として変数名をそのまま用いて来 たが,実際には MIPS には a, b, c などのような名前のレジスタ は存在しない 実際には,32本のレジスタに 0 ~ 31 の番号がついており,そ の番号により指定する addu $10, $8, $9 # $10 ← $8 + $9 ? このままではわかりにくいので,次ページのような別名がつい ている ? 0番レジスタは,常に値0が読み出される特殊なレジスタである
  • 6. 6( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 資料: レジスタ一覧 番号表示 別名 説明 $0 $zero 常にゼロ $1 $at アセンブラ用に予約 $2, $3 $v0, $v1 関数からの戻り値用 $4 ~ $7 $a0 ~ $a3 関数への引数用 $8 ~ $15 $t0 ~ $t7 (主に)一時レジスタ $16 ~ $23 $s0 ~ $s7 (主に)変数割り当て用 $24, $25 $t8, $t9 (主に)一時レジスタ $26, $27 $k0, $k1 OS用に予約 $28 $gp グローバルポインタ $29 $sp スタックポインタ $30 $s8 (主に)変数割り当て用 $31 $ra リターンアドレス
  • 7. 7( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 命令フェッチと命令デコードの動作 メモリ 32ビットALU 32x32ビット レジスタ PC 命令デコーダ アドレス(32ビット) データ(8, 16, 32ビット) 次PC計算 制御回路 mux mux mux は選択回路 (1) 命令 読み出し (2) 命令 デコード (3) PC ← PC + 4
  • 8. 8( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 レジスタ間演算の動作 メモリ 32ビットALU 32x32ビット レジスタ PC 命令デコーダ アドレス(32ビット) データ(8, 16, 32ビット) 次PC計算 制御回路 mux mux mux は選択回路 (1) レジスタ 読み出し (3) レジスタ 書き込み (2) 演算
  • 9. 9( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 レジスタ-即値間の演算命令 (C言語) (MIPSアセンブリ言語) y = x + 100; addu $s1, $s0, 100 # $s1 ← $s0 + 100 ? 命令内で直接指定される定数を即値(immediate)と呼ぶ. ? 演算命令は,2つめの入力オペランドとして即値を取れる. ? 1つめは必ずレジスタ.出力オペランドももちろんレジスタ ? 即値を取る addu 命令は,実際には addiu という命令として実行される(ア センブラが自動的に変換する.SPIMの実行画面にも注目) ? 即値を取る subu 命令は,実際には addiu 命令に符号反転した即値を渡す ことで実行される. ただし,変数 x, y の内容がそれぞれレジスタ s0, s1 に置かれているとする
  • 10. 10( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 例 (C言語) (MIPSアセンブリ言語) y = x - 8; z = 15; subu $s1, $s0, 8 # $s1 ← $s0 - 8 or $s2, $zero, 15 # $s2 ← 15 ただし,変数 x, y, z の内容がそれぞれレジス タ s0, s1, s2 に置かれているとする ? 2行目のようにレジスタへの定数代入よく行われるので,li (load immediate) というマクロ命令でも書けるようになっている. li $s2, 15 # $s2 ← 15
  • 11. 11( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 資料: 主なマクロ命令 命令 説明 move $a, $b $a ← $b # or $a, $zero, $b と等価 li $a, imm $a ← imm # or $a, $zero, imm と等価 (load immediate) nop 何もしない # sll, $zero, $zero, $zero と等価 (no operation)
  • 12. 12( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 レジスタ-即値間演算の動作 メモリ 32ビットALU 32x32ビット レジスタ PC 命令デコーダ アドレス(32ビット) データ(8, 16, 32ビット) 次PC計算 制御回路 mux mux mux は選択回路 (1) レジスタ 読み出し ?即値生成 (2) 演算 (3) レジスタ 書き込み
  • 13. 13( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 ロード?ストア命令 ? レジスタとメモリアドレスを指定して,相互間でデータ転送を行う ? メモリアドレスの指定方法をアドレッシングモードと呼ぶ ? MIPSの場合,アドレッシングモードは1つしかない lw $s1, 12($s0) # $s1 ← mem[12 + $s0] ? 操作対象のメモリアドレス(実効アドレス)はレジスタ s0 の値と 定数 12 を加えたもの ? 例えばレジスタ s0 に 10000 が保存されていたとすると,アドレ ス 10012 から始まる 4 バイト (= 1 ワード) のデータを読み出し, レジスタ s1 に書き込む
  • 14. 14( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 資料: 主なロード?ストア命令 ? 他に,half word 単位や byte 単位のロード命令,ストア命令がある 命令 説明 lw $t, offset($base) $t ← mem[offset + $base] (load word) sw $t, offset($base) mem[offset + $base] ← $t (store word)
  • 15. 15( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 例 (C言語) (MIPSアセンブリ言語) c = a + b; lw $t0, 0($sp) # $t0 ← mem[$sp + 0] lw $t1, 4($sp) # $t1 ← mem[$sp + 4] addu $t2, $t0, $t1 # $t2 ← $t0 + $t1 sw $t2, 8($sp) # mem[$sp + 8] ← $t2 0x7ffff008 0x7ffff004 0x7ffff000 sp 0x7ffff000 a b c ただし,各変数は右図のよう にメモリに割り当てられている とし,レジスタ t0, t1, t2が自由 に使えるとする.以下同様. ※ 実際のアドレスがいくつになるかは場合により異なる
  • 16. 16( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 例 (C言語) (MIPSアセンブリ言語) int i; int x[3]; /* 中略 */ x[i] = 300; addu $t0, $sp, 4 # $t0 ← $sp + 4 lw $t1, 0($sp) # $t1 ← mem[$sp + 0] sll $t1, $t1, 2 # $t1 ← $t1 × 4 addu $t0, $t0, $t1 # $t0 ← $t0 + $t1 li $t2, 300 # $t2 ← 300 sw $t2, 0($t0) # mem[$t0] ← $t2 0x7ffff00c 0x7ffff008 0x7ffff004 0x7ffff000 sp i x[0] x[1] x[2] 0x7ffff000
  • 17. 17( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 ロード命令の動作 メモリ 32ビットALU 32x32ビット レジスタ PC 命令デコーダ アドレス(32ビット) データ(8, 16, 32ビット) 次PC計算 制御回路 mux mux mux は選択回路 (1) 実効アド レス計算 (2) メモリ読み出し
  • 18. 18( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 ストア命令の動作 メモリ 32ビットALU 32x32ビット レジスタ PC 命令デコーダ アドレス(32ビット) データ(8, 16, 32ビット) 次PC計算 制御回路 mux mux mux は選択回路 (1) 実効アド レス計算 (2) メモリ書き込み
  • 19. 例(おまけ):スーパーマリオブラザーズ256W 19( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 ファミリーコンピュータ用ゲーム「スーパーマリオブラザーズ」 (任 天堂, 1985)では,以下のような操作により,通常は 1 ~ 8 までし か存在しない「ワールド」(ゲーム内のステージの呼称)が,テニス のプレイヤの位置に応じて最大 256 種類出現する現象が生じた. ? ゲームプレイ中に電源を切らずにゲームカセットをゲーム機本 体から引き抜き, ? 別のゲーム「テニス」(任天堂, 1984)のカセットを挿入してリセッ トボタンを押し,しばらくプレイした後に, ? 同様にカセットを抜き,スーパーマリオブラザーズに戻してリセッ トボタンを押し,プレイを開始する. この事実から推測できることを述べよ. (2014年度期末試験?改題)
  • 20. 20( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 https://www.youtube.com/watch?v=AXV05nwZtxo
  • 21. 21( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 world 1 map data world 2 map data …ワールド番号(0-7) プレイヤ位置(0-255) マップデータ 開始アドレス マップデータ サイズ Super Mario Bros. Tennis 各ワールドのマップデータ開始アドレス = マップデータ開始アドレス + ワールド番号 × マップデータサイズ このような不具合は, バッファオーバランと総称される
  • 22. 22( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 練習問題 1. レジスタ s0 の内容を s1 にコピーする命令を示せ.(ヒント: レジスタ $zero を活用する.一般に,同じ動作をする命令 は一通りとは限らない) ? この操作はよく使うので,マクロ命令 を用いて move $s1, $s0 # $s1 ← $s0 と書いてよいことになっている. 2. レジスタ s0 の内容の各ビットを反転した結果を s1 に保存 する命令を示せ.(ヒント: nor と $zero を活用する)
  • 23. 23( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 練習問題 解答例 1. 例えば以下の各命令 or $s1, $s0, $zero or $s1, $zero, $s0 addu $s1, $s0, $zero ほか多数 2. 例えば以下の命令 nor $s1, $s0, $zero
  • 24. 24( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 練習問題 lw $t0, 0($sp) addu $t0, $t0, 3 sw $t0, 0($sp) lw $t1, 4($sp) lw $t0, 8($sp) sll $t0, $t0, $t1 sw $t0, 8($sp) lw $t0, 12($sp) slt $t0, $t0, $t1 sw $t0, 12($sp) 4要素の4バイト整数型からなる配列が右図のよ うにメモリに配置されているとする.x[0] … x[3] に格納されている値がそれぞれ 1, 3, 5, 7 の状 態から,以下のコードを実行した.実行後の x[0] … x[3] の値はどうなっているか. 0x7ffff00c 0x7ffff008 0x7ffff004 0x7ffff000 sp x[0] x[1] x[2] x[3] 0x7ffff000
  • 25. 25( ): 2017 (6)鏡 慎吾 東北大学 計算機工学 練習問題 解答例 lw $t0, 0($sp) # $t0 ← x[0] (= 1) addu $t0, $t0, 3 # $t0 ← $t0 + 3 (= 1 + 3) sw $t0, 0($sp) # x[0] ← $t0 (= 4) lw $t1, 4($sp) # $t1 ← x[1] (= 3) lw $t0, 8($sp) # $t0 ← x[2] (= 5) sll $t0, $t0, $t1 # $t0 ← $t0 << $t1 (= 5 << 3) sw $t0, 8($sp) # x[2] ← $t0 (= 40) lw $t0, 12($sp) # $t0 ← x[3] (= 7) slt $t0, $t0, $t1 # $t0 ← ($t0 < $t1) ? 1 : 0 sw $t0, 12($sp) # x[3] ← $t0 (= 0) 結局 x[0] … x[3] は 4, 3, 40, 0 になる.