前面已提到的全部2的32次幂种指令位编码并不是都指定了含义;迄今为止,还未使用的编码可用于未来指令集的扩展。每个使用的指令编码都处于使用的编码多留下的特定间隙中,可从它们所处的位置推断其未来可能的用途。 1. 未使用的算数指令 未使用的算数指令如图: 这些指令看起来非常像乘法指令。这将是一种可能的编码,例如对于整数除法指令就是如此 2. 未使用的控制指令 未使用的控制指令如图 这些指令包括转移、交换指令和状态寄存器传送指令,这里的间隙可用于影响处理器操作模式的其他指令编码。 3. 未使用的Load/Store指令 未使用的Load/Store指令见图 这些事由SWAP指令集Load/Store半字和有符号字节指令占据的区域中未使用的编码。如果将来需要增加数据存取指令,就可使用这些指令。 4. 未使用的协处理器指令 未使用的协处理器指令见图 这些指令格式类似于数据传送指令,可能用来支持所有可能需要增加的协处理器指令。 5. 未定义的指令空间 最大未定义指令的区域看起来像字和无符号字节数据存取指令,然而未来对于这一空间的选用完全保持开放 未定义的指令空间见图 6. 未使用指令的行为 如果试图执行一条指令,它符合上图所示的编码,即在未定义的指令空间,则所有当前的ARM处理器将产生未定义指令的陷阱。 如果执行任何未使用的操作码,则最新的ARM处理器产生未定义指令的陷阱,但早先的版本的行为无法预测,因此应该避免这些指令。
|