目录
第四章——指令系统
1、指令格式
(1)指令(机器指令-二进制数)
(2)指令分类(按照 地址码的数量 分类)
(3)指令分类(按照长度分类)
(4)指令分类(按照 操作类型)
(5)总结
2、拓展操作码
(1)操作码拓展方法(注意事项)
(2)习题(拓展操作码)
(3)总结
3、指令寻址(顺序、跳跃)
(1)总结
4、数据寻址
(1)直接寻址(和立即寻址不一样——2次)
(2)间接寻址(便于-编制程序-n次)
(3)寄存器寻址(速度快-1次)
(4)寄存器间接寻址(速度快-对间接寻址来说-2次)
(5)隐含寻址
(6)立即寻址
(7)总结
5、数据寻址(偏移寻址)
(1)基址寻址(基地址+偏移量——面向操作系统)
(2)变址寻址(循环结构——面向程序员)
(3)相对寻址(方便jump跳转!)
(4)总结
(5)硬件——比较器
(6)堆栈寻址(软硬件的实现方式都有——pop & push)
6、汇编语言
(1) 指明内存的读写长度
(2) 寄存器
(3) 命令说明
(4) X86汇编指令
(5) AT&T格式 和 Intel格式
(6) 选择语句(用jump)
(7) 循环语句(jump & loop)
(8) CISC & RISC
第四章——指令系统
CPU设计厂商会定义并实现一组机器指令集,供汇编语言使用和调用。
机器指令是计算机硬件直接理解和执行的指令,它们以二进制形式表示,对应着特定的操作和功能。
1、指令格式
(1)指令(机器指令-二进制数)
(2)指令分类(按照 地址码的数量 分类)
(3)指令分类(按照长度分类)
机器字长:CPU一次运算,可以处理的位数!(16、32、64位)x32、x64
因此,当指令是双字长指令时,那么CPU需要分两次读取!
(4)指令分类(按照 操作类型)
(5)总结
2、拓展操作码
(1)操作码拓展方法(注意事项)
(2)习题(拓展操作码)
(3)总结
3、指令寻址(顺序、跳跃)
顺序寻址:
根据【指令长度】和【主存储器如何编址】来进行计数(PC-program count)
即由【指令长度】和【主存储器如何编址】的比值来确定累加的步进
PC的数值——指向下一个要运行的指令!(类似于让你运行对应的代码行数!)
跳跃寻址:
当你按照顺序寻找的时候,遇到函数或者(goto语句时),就会跳转到对应的代码行!
这个也是类似!,当你遇到jump语句时,要跳到指定位置!!!
定长指令
变长指令
(1)总结
4、数据寻址
(1)直接寻址(和立即寻址不一样——2次)
直接:直接去主存中找!
立即:地址码=操作数——直接用!
(2)间接寻址(便于-编制程序-n次)
(3)寄存器寻址(速度快-1次)
(4)寄存器间接寻址(速度快-对间接寻址来说-2次)
(5)隐含寻址
(6)立即寻址
(7)总结
5、数据寻址(偏移寻址)
(1)基址寻址(基地址+偏移量——面向操作系统)
记得要用bit位来表明——哪一个寄存器中存放了基地址!!!
优点:存储在内存中,偏移量按照基地址来算(相当于是:相对的),所以当程序并发运行时,指令存储的位置即使有变动,指令也无需修改!
缺点:基址寻址需要一个特定的寄存器来存储基址的值,并且在执行指令时需要进行基址和偏移量的计算。这会引入一定的额外开销。
(2)变址寻址(循环结构——面向程序员)
(3)相对寻址(方便jump跳转!)
注意:程序段发生改变,那么程序指向的操作数会不会改变呢?
优化方法:将数据段和程序段分开!这样当程序段改变,指向的数据位置就不会改变啦!
(4)总结
(5)硬件——比较器
(6)堆栈寻址(软硬件的实现方式都有——pop & push)
6、汇编语言
(1) 指明内存的读写长度
(2) 寄存器
(3) 命令说明
(4) X86汇编指令
(5) AT&T格式 和 Intel格式