1. 双地址指令:
双地址指令是机器指令的一种格式。它有一个操作码和两个地址字段。一地址字段是常见的,可用于目标或源,而单地址指令用于源。
示例:
X = (A + B) x (C + D)
解决方案:
MOV R1, A R1 <- M[A]
ADD R1, B R1 <- R1 + M[B]
MOV R2, C R2 <- M[C]
ADD R2, D R2 <- R2 + D
MUL R1, R2 R1 <- R1 x R2
MOV X, R1 M[X] <- R1
2. 单地址指令:
单地址指令也是机器指令的一种格式。它只有两个字段。一个用于操作码,另一个用于操作数。
示例:
X = (A + B) x (C + D)
解决:
LOAD A AC <- M[A]
ADD B AC <- AC + M[B]
STORE T M[T] <- AC
LOAD C AC <- M[C]
ADD D AC <- AC + M[D]
MUL T AC <- AC x M[T]
STORE X M[X] <- AC
双地址指令和单地址指令的区别:
双地址指令 | 单地址指令 |
---|---|
双地址指令具有三个字段。 | 单地址指令只有两个字段。 |
双地址指令有一个操作码字段和两个地址字段。 | 单地址指令有一个字段用于操作码和一个字段用于地址。 |
与单地址相比,它的指令长度较长。 | 单地址指令的指令长度较短。 |
访问处理器内部的位置比访问内存要慢。 | 单地址指令比内存更快地访问处理器内部的位置。 |
双地址指令通常需要两次内存访问。 | 单地址指令通常需要一次内存访问。 |
一条指令可能需要三个内存访问。 | 一条指令需要一次内存访问。 |
双地址指令不能完全消除三个内存访问。 | 单地址指令完全消除了两次内存访问。 |