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

双地址指令和单地址指令的区别:

双地址指令 单地址指令
双地址指令具有三个字段。 单地址指令只有两个字段。
双地址指令有一个操作码字段和两个地址字段。 单地址指令有一个字段用于操作码和一个字段用于地址。
与单地址相比,它的指令长度较长。 单地址指令的指令长度较短。
访问处理器内部的位置比访问内存要慢。 单地址指令比内存更快地访问处理器内部的位置。
双地址指令通常需要两次内存访问。 单地址指令通常需要一次内存访问。
一条指令可能需要三个内存访问。 一条指令需要一次内存访问。
双地址指令不能完全消除三个内存访问。 单地址指令完全消除了两次内存访问。