使用下面的代碼,我嘗試在兩個較高字節中「存儲」ebx的較低兩個字節,然後使用較低順序的bx作爲臨時變量來訪問偏移量「池子」。最後,我通過右移數據來恢復原始值(它只使用最初的兩個字節)。使用16位寄存器進行有效地址計算作爲偏移
rol ebx, 16
mov bl, dl
;(other operations involving bx)
mov [pool+bx], dword esi
shr ebx, 16
該彙編只是NASM正常,但是我得到的錯誤
搬遷截斷以適應:R_386_16反對'。數據」
鏈接時。有關如何繞過此錯誤的任何建議?簡單地使用另一個寄存器不是一個選項,因爲從字面上看,每個寄存器保存esp並且正在使用段寄存器。
編輯:我認爲有人會問,所以我使用的是32位彙編
不幸的是,我需要保留數據移動到ebx的上部兩個字節,所以截斷不會真的起作用。任何想法,如果我可以卸載池的偏移到未使用的段寄存器? – Precursor