在MIPS中加载x个位

时间:2014-09-23 02:41:23

标签: assembly mips

在MIPS中,我们可以加载 (32位),半字(16位)和字节< / strong>(8位)。

我很想知道我们是否可以加载x个位?

例如,

如果我们有一个32位字,我想只提取(加载)第一个 x

word = 0001 1001 1000 0000 0000 0000 0000 1110

从word加载前12位并存储到temp

temp = 0000 0000 0000 0000 0000 0001 1001 1000

1 个答案:

答案 0 :(得分:1)

我所知道的架构没有支持这个 1 ,因为它只是没用,会影响CPU的性能。您始终可以通过使用AND

屏蔽不需要的位来手动执行此操作

如果变量的地址包含在$s0中,您可以使用此

lw   $t0, 0($s0)  # load the value
srlv $t0, $t0, 20 # shift right 20 bits

如果要加载低12位,则屏蔽掉高位

andi $t0, $t0, 0xfff

从任意位置加载一系列位,组合移位和按位 - 如上所述


1 更新:x86可以加载[{3}}

BZHI的某个内存地址存储的值的低N位