1) 指令格式方面 指令解码简单,指令只有6种格式且32位定长、读写寄存器的位置固定不变、尽可能多的位的位置保持不变(比较奇特的立即数排序就缘于此); 操作数搬移少,提供三个寄存器操作数,有独立的目的寄存器; 符号处理便捷,立即数总是符号扩展且符号位总是处于指令的最高位,可在解码之前进行立即数符合扩展。 2) 寄存器方面 资源丰富,提供32个寄存器(包含一个恒0的寄存器),减少了寄存器保存和恢复的次数,加速函数调用和返回; 操作灵活,提供一个恒0的寄存器,可实现60条伪指令,使得代码更易于读写,且不增加硬件开销; 通用性强,全部为通用寄存器(不会为PC提供单独的寄存器)。 3) 整数运算方面 操作规整,所有的操作都以完整的寄存器宽度处理,只在寄存器之间进行,没有字节或半字操作,即没有寄存器到内存的操作; 运算精简,没有乘法和除法(通过扩展指令可实现),也没有循环移位指令和整数算术溢出检测(通过指令组合可实现)。 4) 寻址方面 简化寻址模式,只使用一种寻址方式,即将12位立即数(符号扩展)与寄存器(存放基址)相加的方式。通过将立即数字段设为0,从而达到x86中寄存器间接寻址的效果。通过将寄存器设为堆栈指针,从而实现类似压栈(push)和出栈(pop)的特殊堆栈指令;
|