2009-02-12 109 views
2

我正在學習SPARC程序集,我必須創建一個從寄存器中提取字段的腳本。該腳本接受3個值,初始編號,字段開始位置,字段長度。
它不能使用任何移位功能,但它可以使用乘法和除法。
我目前患有呼吸道病毒,並且隨後服用了大量藥物。我很難確定從哪裏開始。 某些方向將不勝感激。SPARC - 沒有移位的位掩碼

回答

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的時間),我不會試圖給你一個完整的解決方案 - 這應該足以讓你去。

+0

謝謝!是的,我應該更清楚一點。我只是在尋找方向而非解決方案。這應該是完美的,我會看看我能做些什麼。 – derrickp 2009-02-12 06:18:19