使用下面的代码,我尝试在两个较高字节中“存储”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