指令系统的分类 |
---|
(1)功能: 运算指令:加减乘除、移位、逻辑运算 访存指令:负责取数存数 转移指令:管控制流 特殊的指令 (2)指令使用数据的方式 堆栈型 累加器型 寄存器型:寄存器-存储器型、寄存器-寄存器型 |
不同指令系统完成C=A+B的指令序列(4中指令系统对操作数的访问过程) |
---|
堆栈型(堆栈在内存中) 堆栈型指令又称为零地址指令。它的操作数都在栈顶,在运算指令中不用指定操作数。 指令把栈顶的两个数相加,并将结果写回到栈顶。 PUSH A 分别把A和B从内存取出,并压入堆栈 PUSH B ADD 把栈顶的两个数(A和B的值)弹出,作为加法器的输入,并把输出(相加的结果)压回栈 (此处体现不用指定操作数) POP C 把栈顶的数(A和B相加的结果)弹出,压入内存单元C中 |
累加型 累加器型指令又称为单地址指令。它的一个隐含操作数是累加器,另一个操作数在指令中指定,结果写回到累加器中。 指令的一个操作数必定来自累加器。 LOAD A 把内存单元A的值存入累加器 ADD B 把内存单元B的值与累加器的值相加,并把结果存回到累加器 STORE C 把累加器的值存入内存单元C |
寄存器-存储器型(寄存器在CPU中) 指令的每个操作数都由指令显示指定。操作数是寄存器或内存地址。 指令的一个操作数来自寄存器,另一个操作数来自存储器。 LOAD R1,A 把内存单元A的值存入寄存器R1 ADD R1,B 把寄存器R1的值与内存单元B的值相加,并把结果存回到R1 STORE C,R1 把R1的值存入内存单元C |
寄存器-寄存器型 指令的操作数都来自寄存器,并将结果存于寄存器中。 LOAD R1,A 把内存单元A的值存入寄存器R1 LOAD R2,B 把内存单元B的值存入寄存器R2 ADD R3,R1,R2 把R1和R2的值相加,并把结果存入R3 STORE C,R3 把R3的值存入内存单元C |
操作数(operand)指出指令执行的操作所需要数据的来源。操作数是汇编语言指令的一个字段。 通常一条指令均包含操作符和操作数。例如:在比较指令中操作符指定计算机做比较操作,操作数则指定进行比较的两个数值。 |
算术逻辑单元(Arithmetic&logical Unit)是中央处理器(CPU)的执行单元,是所有中央处理器(CPU)的核心组成部分。 |
栈使用的是一级缓存, 他们通常都是被调用时处于存储空间中,调用完毕立即释放。 堆则是存放在二级缓存中,生命周期由虚拟机的垃圾回收算法来决定(并不是一旦成为孤儿对象就能被回收)。所以调用这些对象的速度要相对来得低一些。 一级缓存都内置在CPU内部并与CPU同速运行,可以有效的提高CPU的运行效率。一级缓存越大,CPU的运行效率越高,但受到CPU内部结构的限制,一级缓存的容量都很小。 CPU缓存(Cache Memory)位于CPU与内存之间的临时存储器,它的容量比内存小但交换速度快。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开内存直接从缓存中调用,从而加快读取速度。 |
NEG是汇编指令中的求补指令,NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数。求补运算也可以表达成:将操作数按位取反后加1。 |
寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址。在中央处理器的控制部件中,包含的寄存器有指令寄存器(IR)和程序计数器(PC)。在中央处理器的算术及逻辑部件中,寄存器有累加器(ACC)。 |