计算机速成班第八集说明和程序
1. 给 CPU 一些指令来运行
CPU之所以强大,是因为它是可编程的。
写不同的指令会执行不同的任务。
是一个可以被软件控制的硬件。
2. 举例:00101110
假设前四位是操作码,后四位指定存储器地址或寄存器。
假设0010代表LOAD_A指令,然后将最后四位数字1110(十进制14)放入寄存器A,因此我们将0010 1110视为“LOAD_A 14”的指令
例:“LOAD_A 14”是从地址14中获取数字3,放入寄存器A中(最好是看图,可以更清晰的观看原视频)
当两个寄存器中的数字相加时,顺序非常重要,因为结果将存储在第二个寄存器中。
视频中使用的命令:load _ a、load _ b、store _ a、add、sub、jump、jump _ neghalt
减法
跳转:跳转:让程序跳转到一个新的位置。
JUMP 0可以跳回开头。
的基本实现是用“指令地址寄存器”中的值重写由指令的最后四位表示的存储器地址的值
只有当某些条件满足时,我们才能跳跃。例如,JUMP否定就是条件跳转的一个例子。
其他类型的JUP
如果相等,跳转:如果相等
如果更大,跳3360
JUML _否定
只有当ALU的“负标志”(算术结果为负,且“负标志”为真)为真时,才执行JUMP,如果为假,则执行JUMP。
停止
计算机需要知道什么时候停止,否则CPU会一直运行,这叫无限循环。
以及指令和数据:都存储在同一个内存中,在基础层面没有区别。它们都是二进制数。HALT非常重要,可以区分指令和数据。
3. 软件强大之处
让我们做硬件做不到的事情。比如ALU没有除法功能,程序给了我们这个功能。
两种策略:
原因:因为4位二进制不能表示数字17,所以真正的现代CPU采用了两种策略:最直接的方式就是用更多的位来表示指令,比如32位或者64位,这就是所谓的指令长度。
策略1:指令长度
策略2:变长指令:
例如,一个中央处理器使用8位操作码。如果看到HALT指令,HALT不需要额外的数据,那么就会立即执行。
如果你看到JUMP,它需要知道位置值,它在JUMP后面。这叫做“即时价值”。
有了这种设计,指令可以是任何长度,但它会使阅读阶段稍微复杂一点。
4. 真实的例子
1971年,英特尔发布了4004处理器,这是首次将CPU制成芯片,为后来的英特尔处理器奠定了基础。
它支持46条指令,足以成为一台工作的计算机。
自1971年以来,处理器有了很大的发展。现代CPU,如英特尔酷睿i7,有数千条指令和指令变体,长度从1字节到15字节不等。
因为越来越多的功能是为CPU设计的,所以指令越来越多。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/139159.html