草庐IT

syswow64

全部标签

c - x64 帧指针应该指向哪里,为什么指向? ( Windows x64 ABI)

我一直在阅读关于Windowsx64ABI的一长串非常好的文章。这些文章的一个非常次要的方面是帧指针的描述。一般要点是,由于Windowsx64调用堆栈规则非常严格,因此通常不需要专用的帧指针,尽管它是可选的。我一直注意到的一个异常(exception)是alloca()用于在堆栈上动态分配内存。这样做的函数显然需要一个帧指针。例如,引用Microsoft关于"StackAllocation"的文档(斜体和粗体由我添加):Ifspaceisdynamicallyallocated(alloca)inafunction,thenanonvolatileregistermustbeused

windows - qt 应用程序 64 位 Windows

是否可以在qtwindows中编译64位可执行文件?它与32位的过程相同还是有任何不同? 最佳答案 看看this维基页面。我描述了如何从源代码为不同的配置构建Qt二进制文件。 关于windows-qt应用程序64位Windows,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/2176048/

c++ - 在 Windows 7 64 位中使用 32 位 shell 扩展

我想开发一个与WindowsXPSP2(32位)和Windows764位兼容的shell扩展(上下文菜单处理程序)。是否可以在64位Windows中运行32位shell扩展,或者必须将shell扩展移植/重建为64位才能在Windows764位中使用?在64位操作系统中使用32位shell扩展是否有任何缺点/已知问题?32位应用程序在64位Windows中运行得很好,但我不确定shell扩展,因为,如果我的理解是正确的,shell扩展是进程中加载的COM服务器进入Explorer进程,它应该是64位Windows中的64位进程...或者是为在64位操作系统中运行的32位shell扩展提

windows - 32 位进程能否在 64 位 Windows 操作系统上访问更多内存?

据我了解,在没有/3GB开关的情况下,32位进程在32位Windows上只能访问2GB内存,并且操作系统出于其自身的邪恶原因占用了部分内存。这似乎与我的经验相吻合,因为我们有一个应用程序在达到大约1.2-1.5GB的RAM时崩溃,没有内存异常,即使仍有足够的内存可用。将此32位应用程序移动到64位Windows是否允许它访问超过1.5GB的内存?应用程序本身是否必须升级到64位? 最佳答案 较新版本的VisualStudio有一个新标志,可以使32位应用程序“识别大地址空间”。基本上它所做的是说,如果它在64位版本的Windows上

windows - 将 Delphi 代码移植到 64 位 - 为什么没有编译器警告?

我们有一个大型DelphiXE代码库,我们希望将其移植到64位。我拥有DelphiXE2许可证,但我找不到任何警告或提示可以帮助我检测有效的32位结构,这些结构现在会导致64位平台下的数据丢失。例如,对于32位编译器完全有效的THandle到Cardinal的赋值在为Win64编译时不会引发任何警告。在使用Delphi2009迁移到Unicode时,我们收到了大量警告,这对我们跟踪和修复可疑代码有很大帮助。使用XE2,我找不到任何东西。我无法想象在编译器级别没有集成任何东西来避免我们对所有代码进行手动审查。我错过了什么吗?如果您尝试过,您是如何将项目移植到64位的?谢谢!

windows - 构建 64 位 dll 时的警告

dll导出头文件extern"C"void_declspec(dllexport)__stdcallfoo();.def文件EXPORTSfoo@1当我通过64位构建配置构建dll时,我遇到了这个警告。warningLNK4197:export'foo'specifiedmultipletimes;usingfirstspecification但如果我通过32位构建配置构建dll,则永远不会出现警告。问题是什么?有什么区别。在接口(interface)的dll头中,我们通常使用这种技术,#ifdefEXPORT_DLL#defineBASICAPI_declspec(dllexport

c - 从 32 位进程获取 64 位进程的命令行字符串

下面的代码非常适合我从32位应用程序获取32位进程的命令行字符串,从64位应用程序获取64位进程,从64位应用程序获取32位进程。如果我尝试从32位应用程序使用64位进程,这将会中断。原因是PROCESS_BASIC_INFORMATION和地址大小的结构大小差异。所以这是我的问题-1)processhacker(http://processhacker.sourceforge.net/forums/viewtopic.php?f=15&t=181)中给出的使用wow64函数的建议似乎不起作用并且失败并出现以下错误-NtWow64ReadVirtualMemory64错误:800000

手机cpu架构查看及armeabi、armeabi-v7a、arm64-v8a及x86等说明

一、如何查看cpu加购win+R,输入cmd填下指令如下adbshellgetpropro.product.cpu.abi二、架构描述1.armeabiv-v7a:第7代及以上的ARM处理器。2011年15月以后的生产的大部分Android设备都使用它.2.arm64-v8a:第8代、64位ARM处理器,很少设备,三星GalaxyS6是其中之一。3.armeabi:第5代、第6代的ARM处理器,早期的手机用的比较多。(现在很少,可以忽略不计)4.x86:平板、模拟器用得比较多。5.x86_64:64位的平板armeabi设备只兼容armeabi,不支持硬件辅助浮点运算,支持所有的ARM*设备;

windows - 在 Windows x64 上使用 RtlAddFunctionTable 描述动态生成的代码

我的应用程序(用Delphi编写,但这并不重要)动态生成代码块(它包含一个内置编译器)。为了让异常在Windowsx64上正常工作,我需要通过RtlAddFunctionTable来描述生成的函数。到目前为止一切顺利,我已经将代码生成器更改为仅使用官方序言和结尾形式,并且通过设置包含UNWIND_INFO等的RUNTIME_FUNCTION对它们进行了编码。但是,生成代码中的(故意的)访问冲突仍然会导致应用程序立即终止,因此显然有问题。使用windbg,我看到以下内容(其中0x4c5006f是异常地址):0:000>.fnent0x4c5006fDebuggerfunctionentr

windows - 我应该提供我的应用程序的 x64 版本吗?

也许我在这里遗漏了x64平台的一个主要观点,但我的看法是,当大量内存、大指针、或其他要求高的因素。但是,我开始注意到一些较小的应用程序除了提供标准的x86版本外,还提供x64版本的安装程序。由于x86在使用WoW的Windowsx64上运行得很好,发布我的应用程序的x64编译版本对我有什么好处吗?如我所见:优点:可能有更高的性能(但在什么条件下)缺点:要创建/支持的其他构建x86目标中不存在的x64目标中的潜在错误依赖于x64版本的供应商/操作系统DLL,需要不同的安装list并引入额外的故障排除复杂性有哪些令人信服的理由会促使我重新考虑添加我的应用的x64编译版本?