0

我正在用 Delphi 编写一个程序,其中包括一个包含一些汇编代码(Pipes.pas)的库。当我运行调用一个名为 StdWndProc 的函数的代码时,我遇到了访问冲突。该过程是一个包含汇编代码的汇编函数。

不久前,我更新了这段代码(Pipes.pas)以包含 unicode 支持和其他内容,但我不知道这个程序集在做什么。关于这里出了什么问题的任何想法?

我在 64 位机器上运行,可能是这个程序集是 32 位的,并且不能在 64 位处理器上正确运行(该项目针对 32 位构建)。

4

2 回答 2

7

32 位进程执行 32 位代码。该代码是从汇编程序还是 Delphi 或其他语言编译的并不重要。

不管机器是 64 位还是 32 位,32 位进程运行 32 位代码。在 64 位机器上,32 位进程在名为 WOW64 的模拟 32 位机器中运行。

从概念上讲,您正在尝试的是可能的,因此结论是您的代码存在错误。

于 2013-08-09T06:20:25.970 回答
2

正如David Heffernan指出的那样,您的问题的原因几乎不可能是操作系统架构。

如果您的代码在 32 位机器上运行没有错误,但在 64 位机器上运行失败,则可能是操作系统问题。这可能是由于使用了 32 位独占目录(如SD:\Program Files在 64 位窗口上称为SD:\Program Files(x86)对于 32 位程序)、注册表反射(这会导致您的程序在Wow3264Node键下存储注册表数据),甚至使用旧的 16 位DLL(不能在 wow3264 下运行),但这是非常罕见的情况,因为它是 2013...

为了能够提供帮助,我需要有关您的代码如何无法正确运行的更多详细信息。

(请注意,原来的问题已经回答了,我只是想提供一些更有用的帮助。)

于 2013-08-09T07:43:34.177 回答