关于ISA架构,之前写过一些总结。这里单独将其中一个技术点拿出来,对比分析不同架构下实现的差异。这个技术点就是算术指令中的溢出检测。
ARM体系结构中,通过CPSR的状态寄存器反映当前指令的溢出状态。

而MIPS,则是通过指令触发中断的方式产生溢出信号,通知处理器,比如,MIPS有如下计算指令:
加法操作:add rd, rs, rt
指令作用为:rd<-rs+rt.将地址为rs的通用寄存器的值与地址为rt的通用寄存器的值进行加法运算,结果保存到地址为rd的通用寄存器中。但是这里有一种特殊情况是,如果加法运算溢出,那么会产生溢出异常,同时不保存结果。
加法操作:addu rd, rs, rt
指令作用为rd<-rs+rt.将地址为RS的通用寄存器的值与地址为rt的通用寄存器的值进行加法运算,结果保存到地址为rd的寄存器中,与上面ADD指令的不同之处在于ADDU指令不进行溢出检查,总是将结果保存到目的寄存器。
减法操作:sub rd, rs, rt
指令作为用为,rd<-rs-rt,将地址为RS的通用寄存器的值与地址为rt的通用寄存器的值进行减法运算,结果保存到地址为RD的通用寄存器中,但是有一种特殊情况,如果减法操作溢出,那么将产生溢出一场,同时不保存结果。
减法操作:subu rd, rs, rt
指令作为用为,rd<-rs-rt,将地址为RS的通用寄存器的值与地址为rt的通用寄存器的值进行减法运算,结果保存到地址为RD的通用寄存器中,与SUB指令不同之处在于,subu指令不进行溢出检查,总是将结果保存到目的寄存器。
比较运算指令:slt rd, rs,rt
指令作用为: rd<-(rs