mips32 R2 中ins指令的解释
ins $x,$y,pos,size
清掉x中pos开始的size位,然后再将y中的低size位,放置到x中pos位开始的地方,合并起来
例如:
ins $x,$y,3,9
在c语言写为:
 x=(x&0xfffff007)|((y&0x1ff)<<3)
 
 ins $x,$y,6,11
 在c语言写为:
 x=(x&0xfff7003f)|((y&0x1ff)<<3)
 
  ins $x,$y,31,1
 在c语言写为:
 x=(x&0x7fffffff)|(y&0x1)

其中

0 <= pos < 32
0 < size <= 32
0 < pos+size <= 32

Feedback

# re: mips ext,inc指令,这个在mips R2中支持,君正4725不支持该指令  回复  更多评论   

2009-09-17 21:00 by 王小明
sll $8,$y,32-size
srl $8,$8,32-size-pos

sll $9, $x,32-pos
srl $9, $9,32-pos

srl $x, $x,pos+size
sll $x, $x,pos+size

or $x,$x,$8
or $x,$x,$9

# re: mips ext,inc指令,这个在mips R2中支持,君正4725不支持该指令  回复  更多评论   

2013-05-03 07:39 by duan kaiyong
感觉例子有些不理解的地方:

1. ins $x,$y,31,1
在c语言写为:
x=(x&0x7fffffff)|(y&0x1)
----------------------------
是否应该为x=(x&0x7fffffff)|((y&0x1)<<31)

2. ins $x,$y,3,9
在c语言写为:
x=(x&0xfffff007)|((y&0x1ff)<<3)
----------------------------
这里后面的size > pos . 是否合理?


如果有空,可否回复到duankaiyong#163.com
只有注册用户登录后才能发表评论。