8得票1回答
Delphi 64位使用运行时库进行调试时,活动的堆栈帧有误。

我遇到了一个Win64调试问题,看起来我们“丢失”了调试信息。所以我做了一些研究,并重新创建了我们旗舰产品的所有.dproj文件。这有所帮助,因为我恢复了我的“丢失”的蓝色小球。 但是现在我遇到了一个新的问题:堆栈显示窗口中显示的(顶部)堆栈帧似乎是错误的,导致本地变量不在本地变量窗格中显示...

18得票5回答
64位Windows API:C/C++中的“DWORD”大小是多少?

我只安装了32位的Windows,所以无法亲自验证。 如果我理解正确,在Microsoft API中各处使用的DWORD是指原始的16位字,并且与当前的硬件架构无关? 所以DWORD似乎是32位,即使最终将我的应用程序编译和链接以在64位Windows上运行,DWORD仍将保持32位吗?还...

7得票5回答
在Windows 7.0 64位系统上,使用VB6应用程序中的ImageList会导致崩溃。

我有一个使用COMCTL32.OCX(“Microsoft Windows Common Controls 5.0(SP2)”)中的ImageList控件为TreeViews和ListViews提供图标的旧VB6应用程序。但这个应用程序在Windows 7.0 64位上无法启动。一旦它尝试加载...

10得票7回答
如何在64位Windows汇编中使用"GS:"(例如,移植TLS代码)

如何在64位Windows(当前为XP-64)下,用户空间程序配置“GS:”?(通过将GS:0设置为任意64位线性地址进行配置) 我正在尝试将最初开发为Win32的“JIT”环境移植到X86-64。 不幸的是,相同的代码需要在多个用户空间线程(例如“纤程”)上运行。该代码在Win32版本中...

8得票1回答
如何在Win64上禁用重定向

我想将 c:\Windows\regedit.exe复制到与 regedit2.exe相同的目录中,但是当我尝试复制时,我遇到了一个错误,说找不到regedit.exe文件,有时会将其复制到windows\SysWOW64目录下。实际上,我知道win64正在重定向它,但是如何禁用重定向并将wi...

11得票1回答
虚拟分配粒度和页面大小

Win64平台上虚拟分配粒度和页面大小的典型值是什么?这对应于SYSTEM_INFO结构体中的dwAllocationGranularity和dwPageSize参数。 在Win32系统上,它们分别为64k和4k。 我需要知道这些信息,因为我已经为一个Win32应用程序设计了一个基于Vir...

19得票2回答
对于少于四个参数的函数,保留堆栈空间是必要的吗?

刚开始学习 x64 汇编,我对函数、参数和堆栈有个问题。据我所知,在 Windows 中,一个函数的前四个参数通过 rcx、rdx、r8 和 r9 寄存器传递(对于浮点数还会使用 xmm0-xmm3 寄存器)。因此,一个带有四个参数的简单加法函数应该如下所示:add: mov r10, ...

7得票2回答
在Win64 ABI中,保留的参数栈空间能用于通用存储吗?

我正在学习Windows上的x64汇编语言,这是出于兴趣。根据Windows x64调用约定的MSDN文档所述: 调用者负责为被调用方分配参数空间,并且必须始终为4个寄存器参数分配足够的空间,即使被调用方没有那么多参数。这有助于支持C未经声明的函数和变参的C/C++函数的简单性。 由于我的...

25得票9回答
9得票3回答
将Delphi代码移植到64位——为什么没有编译器警告?

我们有一个大型的Delphi XE代码库,我们想要将其移植到64位平台上。 我拥有Delphi XE2许可证,但我找不到任何警告或提示,可以帮助我检测在64位平台下可能导致数据丢失的有效32位结构。例如,在32位编译器中完全有效的THandle到Cardinal赋值,在编译Win64时不会引...