2011-04-25 76 views

回答

1

我严重怀疑会存在一个。设计为在16位环境下运行的代码与32位模式不兼容。例如,有一条指令告诉CPU翻转即将到来的指令的位大小。在16位模式下,需要使用这种指令来使用32位指令。然而,在32位模式下使用16位指令需要相同的操作码。

段描述符中是否指定了一系列操作码是16位还是32位。无论如何,如果你有16位代码,你想在32位模式下使用,它没有操作系统依赖关系,你可以使用它通过使用IDA进行反汇编,然后用32位汇编器重新编译它。当然,只有在许可证允许的情况下才可以。 (虽然这可能是合理的使用,但IANAL)。

如果代码还依赖于底层的操作系统,这可能是一个困难的多,并且需要重写代码的可能显著部分。

1

推测OMF16代码的目标是16位x86实模式或286保护模式?既然如此,目标文件格式是不是真的是你的问题,代码本身是完全不相容的,因为它使用不同的寄存器大小和不同的寻址方案。此外,如果代码针对DOS,Win16或OS/2(即使用OMF16的系统),那么将其定位到32位目标不仅仅是转换目标文件格式的情况。

你需要从给标签问题是用C或C++源重建?如果不是这样,你有显著逆向工程任务,在你的手中!