课程链接:北京大学陆俊林老师的计算机组成原理课
1. 设计自己的计算机
一个简单的计算机指令系统
- 运算类指令:ADD R,M;功能:将R的内容和M中的内容相加后存入R
- 传送类指令:LOAD R,M;功能:将M中的内容装入R
- 传送类指令:STORE M,R;功能:将R中的内容存入M
- 转移类指令:JMP L;功能:无条件转向L处
- *注:M和L为存储器地址,R为寄存器编号
一个简单的计算机的指令格式
- 每条指令等长,均为2个字节
- 第一个字节的高4位是操作码(LOAD:0000;ADD:0001;STORE:0010;JMP:0011;*注:假设仅4条指令)
- 第一个字节的低4位是寄存器号(R0~R3:0000~0011;*注:假设仅4个寄存器)
- 第二个字节是存储单元地址(最大可使用256个字节的存储器)
第一个字节 | 第二个字节 |
---|---|
xxxx xxxx | xxxx xxxx |
操作码、寄存器号 | 存储单元地址 |
正确的指令示例(ADD R2,[9]):
第一个字节 | 第二个字节 |
---|---|
0001 0010 | 0000 1001 |
错误的指令示例(操作码未定义,寄存器号未定义):
第一个字节 | 第二个字节 |
---|---|
0101 0010 | 0000 1001 |
*注:无论多高级的语言,都得先转化成机器语言(中间一列,一系列的二进制代码),程序才可以运行
2. x86体系结构
从16位到64位:x86体系结构的演变
- 寄存器模型
- 存储器寻址:太复杂听不懂了呜呜呜,得求教uu们惹!
3. x86指令简介
指令的主要类别
- 传送类指令:例如:从存储器到通用寄存器,从通用寄存器到I/O接口等
- 运算类指令:例如:加、减、乘、除、与、或、非等
- 转移类指令:无条件转移、条件转移、过程调用等
- 控制类指令:暂停处理器、清除标记位等
- 移位指令
4. 复杂的x86指令举例
复杂指令举例
- 串操作指令
- 循环控制指令
- 查表指令
- 十进制调整指令
5. MIPS体系结构
MIPS的设计指导思想
- 全称 Microprocessor without Interlocked Piped Stages
- 主要关注点:减少指令的类型,降低指令复杂度
- 基本原则:A simpler CPU is a faster CPU
MIPS指令的主要特点
- 固定的指令长度:32-bit,简化了从存储器取指令
- 简单的寻址模式:简化了从存储器取操作数
- 指令数量减少,指令功能简单:简化了指令的执行过程,一条指令只完成一个操作
- 只有LOAD和STORE指令可以访问存储器:例如,不支持x86指令的 ADD AX, [3000H] 操作
- 需要优秀的编译器支持
6. MIPS指令简介
MIPS指令的基本格式
- R:Register,寄存器
- I:Immediate,立即数
- J:Jump,无条件转移