2012-11-17 53 views
-2

我正在嘗試學習SPARC並嘗試創建大小爲4,000字節的數組。在這個數組的內部,我需要計算一個偏移量來將值放在該數組的正確位置。我想我知道如何調整數組的大小(只使用.skip?),我知道如何計算我的偏移量,但是誰能告訴我如何將值放入正確的字節? 謝謝大家。編輯:我最初說的位,意思是說字節。將數據放入特定位

+0

我試圖MOV,但我知道這是不對的。我真的不知道該怎麼做。 – billatron

回答

0

使用read-modify-write和正確的按位操作(AND清除一位,OR設置一位)。如果內存不是問題,那麼您當然也可以爲每個位使用一個字節。

更新:說明如何清除數組中的一位的示例代碼。設置一點是相似的,除了使用andn它將使用or

! clear bit index %o0 in "array" 
clrbit: 
    mov %o0, %o1 
    srl %o0, 3, %o0  ! byte offset 
    and %o1, 7, %o1  ! bit offset 
    set array, %o2  ! array base 
    add %o2, %o0, %o0 ! byte address 
    set 1, %o3   ! bit mask 
    sll %o3, %o1, %o1 ! 1 << bit offset 
    ldub [%o0], %o3  ! load byte 
    andn %o3, %o1, %o3 ! mask off bit to clear 
    stb %o3, [%o0]  ! write back 
    retl 
    nop 

哦,我看到問題已更新爲字節而不是位。那麼,這很容易。在%o0假設指數,數據以%o1寫:

set array, %o2  ! array base address 
add %o2, %o0, %o2 ! add byte offset 
stb %o1, [%o2]  ! write byte 
+0

假設我想清除字節5中的數據......我該怎麼做呢?和5,「\ n」,5給出錯誤... 您的幫助是非常感謝 – billatron

相關問題