SPARC - 没有移位的位掩码

时间:2009-02-12 06:00:13

标签: assembly bit-manipulation sparc

我正在学习SPARC程序集,我必须创建一个从寄存器中提取字段的脚本。该脚本接受3个值,初始编号,字段开始位置,字段长度 它不能使用任何移位功能,但它可以使用乘法和除法 我目前患有呼吸道病毒,随后服用了大量的药物。我很难搞清楚从哪里开始。 一些方向将不胜感激。

1 个答案:

答案 0 :(得分:3)

乘以2是左移,除以2是右移(至少对于无符号数)。

如果你想左移2位,则乘以4。

因此,例如,如果您有二进制值:

b15              b0
v                 V
0000 1111 0101 1000

并且你想要提取b3和b2,你将和整个批次用0xc0除以4。

0000 1111 0101 1000
0000 0000 0000 1100  <- AND with 0xc0
-------------------
0000 0000 0000 1000
-------------------
0000 0000 0000 0010  <- divide by 4

由于这听起来像家庭作业(我没有为SPARC编写时间),我不会尝试给你一个完整的解决方案 - 这应该足以让你去。