2012-10-05 56 views
0

因此,我正在LC3中開發一個程序,並且遇到了屏蔽問題。我很好地創建了一個適當長度的全部1的面具,將所有事情都精確地轉移到適當的領域,但是我一旦完成AND比較,我就不能將事情轉移回右側。你如何正確轉換LC3?我在迭代比較中看到了一些東西,但是我不知道如何比較不同位置的位,並且將它們放在相同的位置,我最終必須將它們向右移。我錯過了什麼嗎?在LC3中使用迭代的右移

回答

0

要模擬右移,你只需要建立兩個口罩,一個源位和一個目標位:

src_mask=0x04; // read from bit position 2 
dst_mask=0x01; // write to bit position 0 

while(src) { // or while src_mask, because that too will eventually go to zero 
    if (src & src_mask) dst+=dst_mask; // or dst|=dst_mask 
    src &= (~src_mask); 
    dst_mask=dst_mask+dst_mask; 
    src_mask=src_mask+src_mask; 
} 
0

你可能不會需要做在這種情況下右移在所有 - 在將它移開之前只保存起始字段,然後將其從內存中恢復。