跳转至

前缀编码法

计组的变长操作码划分

  1. 某指令系统指令字长 16 位,操作码字段为 4 位,地址码字段为 4 位,采用扩展操作码技术,形成三地址指令 15 条、二地址指令 15 条、一地址指令 15 条、零地址指令 16 条。

指令格式如下:

OP A1 A2 A3
4位 4位 4位 4位

其所对应的前缀哈夫曼树如图:

1723386740119-c308002c-d81e-4957-ae04-889dbdf8ebb5.png

指令 OP A1 A2 A3
15条三地址指令 0000 A1 A2 A3
0001 A1 A2 A3
........
1110 A1 A2 A3
15条二地址指令 1111 0000 A2 A3
1111 0001 A2 A3
.......
1111 1110 A2 A3
15条一地址指令 1111 1111 0000 A3
1111 1111 0001 A3
........
1111 1111 1110 A3
16条零地址指令 1111 1111 1111 0000
1111 1111 1111 0000
.......
1111 1111 1111
  1. 某指令系统指令长 16 位,操作码字段为 4 位,地址码字段为 4 位,采用扩展操作码技术,形成三地址指令 15 条、二地址指令 12 条、一地址指令 63 条,则最多还可定义多少条零地址指令?

解:指令格式如下:

OP A1 A2 A3
4位 4位 4位 4位

1723387874601-3d829004-8572-41e2-9f56-908da203483d.png

  1. 某指令系统指令长 16 位,地址码字段为 6 位,采用扩展操作码技术,如果已定义了 12 条二地址指令,则最多还可定义多少条一地址指令?

解:指令格式如下:

OP A1 A2
4位 6位 6位

1723388666653-17a51739-cd6d-492b-8bdd-b4dd4057e6ac.png

所以最多还可定义\(4 \times 2^6 = 256\)条一地址指令。

  1. 某指令系统指令长 32 位,地址码字段为 12 位,采用扩展操作码技术,如果已定义了 250 条二地址指令,则最多还可定义多少条一地址指令?

【解】指令格式如下:

OP A1 A2
8位 12位 12位

1723389223788-177bf5cb-d796-4e38-9f85-e25d389d38ec.png

所以最多还可定义\(6 \times 2^{12} = 24K\)条一地址指令。

  1. (2022 年统考真题)设计某指令系统时,假设采用 16 位定长指令字格式,操作码使用扩展编码方式,地址码为 6 位,包含零地址、一地址和二地址 3 种格式的指令。若二地址指令有 12 条,一地址指令有 254 条,则零地址指令的条数最多为( )。

A. 0

B. 2

C. 64

D. 128

解:指令格式如下:

OP A1 A2
4位 6位 6位

1723389989604-554ff337-d440-4123-9c3a-38c682cd36ec.png

所以最多还可定义\(2 \times 2^6 = 128\)条零地址指令,本题选 D。

  1. (2017 年统考真题)某计算机按字节编址,指令字长固定且只有两种指令格式,其中三地址指令 29 条,二地址指令 107 条,每个地址字段为 6 位,则指令字长至少应该是( )

A. 24 位

B. 26 位

C. 28 位

D. 32 位

【解】三地址指令条数满足\(29 < 2^5 = 32\),因此推断操作码字段 OP 至少为 5 位,指令格式可能如下:

OP A1 A2 A3
5位 6位 6位 6位

所以指令字长至少有\(5 + 3 \times 6 = 23\)位,又因为计算机按字节编址,所以取成 24 位即 3 字节,本题选 A。

计网的变长子网划分

https://www.bilibili.com/video/BV11G4y1x75G