问题标题:
【MIPS指令集中addi和addiu的,add和addu的区别对于addi和addiu,我看指令集的说明是aadi会溢出处理,而addiu不会但addiu表面的意思不是加无符号立即数么?无符号不是没有符号位,都是正数么?那为什么要对】
问题描述:
MIPS指令集中addi和addiu的,add和addu的区别
对于addi和addiu,我看指令集的说明是aadi会溢出处理,而addiu不会
但addiu表面的意思不是加无符号立即数么?无符号不是没有符号位,都是正数么?那为什么要对16位进行有符号扩展.还有,有溢出处理和没有溢出处理是什么区别,怎样进行溢出处理.
程善美回答:
addiu是GPR和立即数做无符号加法操作,请参考ISA.有溢出的操作在溢出发生时会发exception,即overflowexception;无溢出运算在溢出发生(GPR的位宽有限,表示不了结果)时,不报告(HW不报告给SW).溢出的处理,随便,MIPS架构定义了,这样的报告机制.你可以在overflowexceptionhandler中知道这个加法(或者减法)发生了溢出,要用两个GPR表示这个结果;当然如果你不在意结果时,也可以什么都不做.
点击显示
数学推荐
热门数学推荐