模擬試験解答

模擬試験解答
1-a
• 命令のフォーマット
• 第8回の講義資料
LDI
ADDI
LDIU
ST
r1, #0x80
r1, #0x05
r0, #0x00
r1, (r0)
→ 01000 001 0000000
→ 01100 001 00000101
→ 01001 000 00000000
→ 00000 001 000 01000
Opecode
Function
1-b
• こうなる
命令
レジスタ r0
r1
r2
LDI
r1, #0x80
ADDI r1, #0x05
xxxx
xxxx
FF80
FF85
xxxx
xxxx
LDIU r0, #0x00
ST
r1, (r0)
0000
0000
FF85
FF85
xxxx
xxxx
• 0番地に0xFF85
2
• 各信号線の役割
– pcsel:プログラムカウンタ(たぶん…)
– comsel: ALUの動作を決定
– alu_bsel: ALUへの入力b
– rf_csel: レジスタファイルへの入力
– rwe: レジスタファイルの書き込み制御
– we: メモリの書き込み制御
2
• スペースの都合で縦書き
表2: 解答
ADDI
BEZ
pcsel
comsel
alu_bsel
00
110
01
01/10
- (何でも良い)
- (何でも良い)
rf_csel
00
- (何でも良い)
rwe
1
0
we
0
0
3-a
• 解答例(あくまでー例)
loop:
end:
LDI r0, #0x00
LDI r1, #0x08
LDI r6, #0x08
LD r2, (r0)
ST r2, (r1)
ADDI r0, #0x01
ADDI r1, #0x01
ADDI r6, #0xFF(-1)
BNEZ r6, loop(-6)
NOP
JMP end
3-b
• たぶんこういうこと↓
Address
r0 →
Address
Data
07
08
01
02
09
0a
0b
0c
0d
0e
03
04
05
06
07
08
r1 → 23
24
コピー
25
26
27
28
29
2a
Data
3-b
• 解答例(あくまで(ry)
メインルーティン
サブルーティン
hoge
・・・
JAL sub
・・・
hogehoge
sub: LDI r5, #0x08
loop: LD r2, (r0)
ST r2, (r1)
ADDI r0, #0x01
ADDI r1, #0x01
ADDI r5, #0xFF(-1)
BNZ r5, loop(-6)
NOP
LDLI r5, #0xFF
JR r7
3-c
• 解答例(ry
メインルーティン
サブルーティン
・・・
sub: LDI r6, #0x08
loop: LD r2, (r0)
ST r2, (r1)
ADDI r0, #0x01
ADDI r1, #0x01
ADDI r6, #0xFF(-1)
BNZ r6, loop(-6)
NOP
LDLI r6, #0xFF
JR r7
ST r0, (r6)
ADDI r6, #0xFF
ST r1, (r6)
ADDI r6, #0xFF
ST r2, (r6)
JAL sub
LD r2, (r6)
ADDI r6, #0x01
LD r1, (r6)
ADDI r6, #0x01
LD r0, (r6)
・・・
4
• 考えかた
ALU
MUX
ALU_THA
ALU_ADD
MUX
Data
Imm
Address
Register
File
Memory
Module
おわり