回答

0

我的猜測:

  • 線是一個指向無符號的8位(字節)(l_uint8 *)line
  • 一個操縱n個(y是一個指針)
  • 然而,在鑄造之後,該地址的最後2位也是異或(unsigned) nged整數指針:(l_uintptr_t)y^3 - > Z(z是一個指針)
  • 最後一個投射回無符號字節點和寫入值val有:*(l_uint8 *)z = val

編輯: 的^ 3是解決字節的安排(即,小vs大端)。數字0x12345678可以通過兩種方式放入連續字節:0x12,0x34,0x56,0x78(這是大端)或0x78,0x56,0x34,0x12(小端)。 XOR將從大端址尋址(見274行)切換到小端(276行)。這是依賴於處理器的,源代碼是以某種方式編譯的。

+0

如果我們對地址的最後兩位進行異或,會發生什麼? 我知道...... 11變成...... 00,...... 10變成...... 01 ...... 01變成...... 10和...... 00變成...... 11 但是,爲什麼他這樣做? – saint1729

相關問題