A.5 指令集中的操作
多数指令集体系结构支持的操作,可以按图 A.12 分类。对各种体系结构都适用的一条经验法则是:执行最频繁的通常是指令集中的简单操作。例如,在流行的 Intel 80x86 上运行一组整数程序时,图 A.13 中的 10 条简单指令占全部执行指令的 96%。因此,实现这些指令时应确保它们足够快,因为它们就是最常见的情形。
如前所述,图 A.13 的指令存在于面向各种应用——桌面、服务器、嵌入式——的每一种计算机中。图 A.12 中各类操作的差异,主要取决于指令集包含哪些数据类型。
| 操作类型 | 示例 |
|---|---|
| 算术与逻辑 | 整数算术、逻辑操作:加、减、与、或、乘、除 |
| 数据传送 | 加载、存储;在支持存储器寻址的计算机上为 move 指令 |
| 控制 | 分支、跳转、过程调用与返回、陷阱 |
| 系统 | 操作系统调用、虚拟存储器管理指令 |
| 浮点 | 浮点加法、乘法、除法、比较 |
| 十进制 | 十进制加法、乘法、十进制数与字符转换 |
| 字符串 | 字符串传送、比较、搜索 |
| 图形 | 像素与顶点操作、压缩/解压缩操作 |
| 排名 | 80x86 指令 | 整数程序平均占比(占执行指令总数) |
|---|---|---|
| 1 | 加载(Load) | 22% |
| 2 | 条件分支(Conditional branch) | 20% |
| 3 | 比较(Compare) | 16% |
| 4 | 存储(Store) | 12% |
| 5 | 加法(Add) | 8% |
| 6 | 按位与(And) | 6% |
| 7 | 减法(Sub) | 5% |
| 8 | 寄存器间传送(Move register-register) | 4% |
| 9 | 调用(Call) | 1% |
| 10 | 返回(Return) | 1% |
| 总计 | 96% |
译注: 原表所列已舍入百分比相加为 95%,原表总计与图注均为 96%。