T1
1
最少 15 位。
2
- 5 位 opcode
- 两个寄存器共 6 位
- 1 位指示指令为立即数的加
- 剩 4 位立即数
补码,最大数为
3
- 5 位 opcode
- 寄存器 3 位
- 剩 8 位 PCoffset
地址范围
T2
1
- Fetch 从内存中获取指令,使用 PC 中的地址。然后将PC递增,指向下一条指令。
- Decode 对获取的指令进行译码,确定操作码及相关操作数。此阶段识别要执行的操作及将要访问的寄存器或内存位置。
- Evaluate Address 如果指令需要访问内存,通过偏移量等,计算操作数的有效地址。
- Fetch Operands 从指定的寄存器或内存位置获取指令所需的操作数。
- Execute 执行指令所指定的实际操作。
- Store Result 将执行结果写回到指令指定的目标,寄存器或内存位置。
2
Opcode | Fetch | Decode | Evaluate Address | Fetch Operands | Execute | Store Result |
---|---|---|---|---|---|---|
ADD | 1 | 1 | 1 | 1 | 1 | |
AND | 1 | 1 | 1 | 1 | 1 | |
ST | 1 | 1 | 1 | 1 | 1 | 1 |
STR | 1 | 1 | 1 | 1 | 1 | 1 |
LDI | 1 | 1 | 1 | 1 | 1 | 1 |
LD | 1 | 1 | 1 | 1 | 1 | 1 |
LEA | 1 | 1 | 1 | 1 | 1 | |
BR | 1 | 1 | 1 | |||
JMP | 1 | 1 | 1 |
3
LEA:6
ADD:6
ST:106
AND:6
ADD:6
STR:205
LDI:106
总共:441
4
ADD 指令
FETCH | DECODE | EVALUATE ADDRESS | FETCH OPERANDS | EXECUTE | STORE RESULT | |
---|---|---|---|---|---|---|
PC | RW | |||||
IR | W | R | R | R | R | |
MAR | W | |||||
MDR | ||||||
MEM | R | |||||
registers | R | W | W | |||
NZP | W |
STR 指令
FETCH | DECODE | EVALUATE ADDRESS | FETCH OPERANDS | EXECUTE | STORE RESULT | |
---|---|---|---|---|---|---|
PC | RW | |||||
IR | W | R | R | R | R | R |
MAR | W | W | ||||
MDR | W | |||||
MEM | R | W | ||||
registers | R | R | ||||
NZP | W |
JMP 指令
FETCH | DECODE | EVALUATE ADDRESS | FETCH OPERANDS | EXECUTE | STORE RESULT | |
---|---|---|---|---|---|---|
PC | RW | W | ||||
IR | W | R | R | R | ||
MAR | W | |||||
MDR | ||||||
MEM | R | |||||
registers | ||||||
NZP |
5
除了前 5 个周期外,每个周期处理完一个指令。
共 995 个。
T3
1
7
2
x3000: 1101 000 000 0 00 000
x3001: 0001 000 000 1 00001
x3002: 0001 010 001 0 00 000
x3003: 0001 010 001 0 00 010
x3004: 1001 010 010 111111
x3005: 0000 010 000000001
x3006: 1111 0000 00100101
3
- 引入一个新的操作码用于 XOR 指令,将 XOR 添加到指令集
- 更新指令解码器,识别新的 XOR 操作码,并将其路由到适当的执行路径。
- 修改控制逻辑,能向 ALU 发出执行 XOR 操作的信号。
- 在 ALU 内部实现逻辑电路,添加 XOR 操作
- 更新汇编器,识别新的 XOR 指令并生成适当的机器代码。
T4
R/W | MAR | MDR |
---|---|---|
W | x4000 | 11110 |
R | x4003 | 10110 |
W | x4001 | 10110 |
R | x4002 | 01101 |
W | x4003 | 01101 |
memory1:
01101
11010
01101
10110
11110
memory2:
11110
10110
01101
10110
11110
memory3:
11110
10110
01101
01101
11110
T5
X | Does the program halt? | Value stored in R0 |
---|---|---|
000000010 | y | 2 |
000000001 | y | 3 |
000000000 | y | 6 |
111111111 | n | |
111111110 | n |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
2021-11-02 2021ZR noip集训day12
2021-11-02 CF1375F Integer Game