对于某些使用64位变量的cpu绑定代码,使用Amd64指令集而不是x86是有益的.如何在32位 Windows(例如 Windows XP SP3)下完成?当然,我假设一个现代的,支持Amd64的cpu.我排除了工作但重量级的方法:将一个完整的64位操作系统作为虚拟机运行,例如VirtualBox下的Udntu for Amd64.

我知道需要一些程序集,并且会有限制,特别是解决比32位Windows管理更多的内存.但我正在考虑纯粹的计算任务,只需要适量的内存而不需要调用外部函数.

在32位通用OS(无内核修改/特殊驱动程序/管理程序)中无法使用Amd64指令(长模式).

这是因为:

1)使用本机64位指令需要切换到长模式.这是特权行动.如果cpu切换到64位模式,32位操作系统内核无法继续工作,因此在进入内核之前应该切换回来

2)但是内核通常是异步调用的,用于定时器(调度程序)和其他硬件中断(驱动程序).它不会保存64位寄存器,也不会将模式从long更改为protected.

也许可以编写特殊的驱动程序,它将在32位操作系统上执行64位任务,但这种驱动程序更像是64位内核和内核的动态修补程序.我不知道这样的解决方案.

在32位操作系统中运行时,只能使用MMX,SSE,SSE2,SSE3,AVX访问64位ALU和cpu寄存器.

我可以说,当使用64位内核时,Linux,某些BSD,Mac OS X都有一种模式,但用户空间软件是32位.在这种情况下,可以运行32位和64位应用程序,因为内核知道64位模式并且可以访问64位寄存器来执行任务切换.据我所知,MS Windows本身没有这样的模式(W7模拟32位模式,但这被称为我的MS作为模拟器,因此我认为它不是内核中的特性).

其他可能性(这是更好的,你的cpu支持硬件虚拟化),是使用64位虚拟机管理程序(VMware / Xen,其他价格过高的解决方案)与32位和64位客户操作系统. VirtualBox是使用管理程序的另一种选择,可以免费使用.

cpu-architecture – 在32位Windows下使用Amd64指令的轻量级方法?的更多相关文章

  1. ios – 如何使用MagicalRecord设置Core Data轻量级迁移?

    解决方法MagicalRecord的重点在于为您管理:查看有关CoreData堆栈设置here的文档.

  2. ios – 如何在Swift中进行轻量级CoreData迁移

    如果没有,我该如何添加?

  3. EFColorPicker - 一个纯 Swift 的轻量级 iOS 颜色选择器

    EFColorPicker是一个纯Swift的轻量级iOS颜色选择器,受MSColorPicker启发。或执行以下命令:环境iOS8.0+Xcode9.0+Swift4.0+安装EFColorPicker可以通过CocoaPods进行获取。只需要在你的Podfile中添加如下代码就能实现引入:备注EFColorPicker的第一个版本从MSColorPicker转换而来,在此对MSColorPicker的作者sgl0v表示感谢!作者EyreFree,eyrefree@eyrefree.org协议EFQRC

  4. android – 轻量级跨平台C GUI(OpenGL)

    我正在寻找一个轻量级的跨平台GUI库,用于不同的信号处理应用程序.ANSI-C程序必须与其静态链接,并且大小很重要.完成的应用程序必须在iPad,iPhone,Android,Ubuntu,Leopard,Windows等平台上具有相同的外观.Qt不合适,因为它太大了,并且在iOS设备上不起作用.我倾向于基于OpenGL的GUI库,因为每个现代目标平台都支持OpenGL,并且OpenGL应用程序在

  5. 前端必会的轻量打包工具gulp使用详解

    这篇文章主要为大家介绍了前端必会的轻量打包工具gulp使用详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  6. react最流行的生态替代antdpro搭建轻量级后台管理

    这篇文章主要为大家介绍了react最流行的生态替代antdpro搭建轻量级后台管理示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  7. React 程序设计简单的轻量级自动完成搜索框应用

    这篇文章主要为大家介绍了React 程序设计简单的轻量级自动完成搜索框应用,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

  8. cpu-architecture – 在32位Windows下使用Amd64指令的轻量级方法?

    对于某些使用64位变量的cpu绑定代码,使用Amd64指令集而不是x86是有益的.如何在32位Windows下完成?

  9. 是否有适用于Ubuntu 9.10桌面的轻量级MTA?

    我正在写一个Perl脚本作为一个cron工作运行,我想通过电子邮件发送结果&错误到笔记本电脑上的本地帐户.我想要一些可以谈论SMTP的东西(任何MTA都不遵守SMTP?).我使用Thunderbird3,所以我还需要一个POP/IMAP服务器.不需要垃圾邮件控制,因为我会严格锁定它,只接受来自笔记本电脑本身的邮件.谢谢!

  10. ubuntu – 在i386机器上为amd64编译debian软件包?

    我有一台i386ubuntu耐用机器和一台amd64ubuntu耐用机器.我想为i386上的amd64机器编译一个debian软件包.如果我在i386机器上执行dpkg-buildpackage,它会为i386生成一个deb,它无法安装在amd64机器上.反正有没有在i386机器上编译amd64的deb?

随机推荐

  1. static – 在页面之间共享数据的最佳实践

    我想知道在UWP的页面之间发送像’selectedItem’等变量的最佳做法是什么?创建一个每个页面都知道的静态全局变量类是一个好主意吗?

  2. .net – 为Windows窗体控件提供百分比宽度/高度

    WindowsForm开发的新手,但在Web开发方面经验丰富.有没有办法为Windows窗体控件指定百分比宽度/高度,以便在用户调整窗口大小时扩展/缩小?当窗口调整大小时,可以编写代码来改变控件的宽度/高度,但我希望有更好的方法,比如在HTML/CSS中.在那儿?

  3. 使用Windows Azure查询表存储数据

    我需要使用特定帐户吗?>将应用程序部署到Azure服务后,如何查询数据?GoogleAppEngine有一个数据查看器/查询工具,Azure有类似的东西吗?>您可以看到的sqlExpressintance仅在开发结构中,并且一旦您表示没有等效,所以请小心使用它.>您可以尝试使用Linqpad查询表格.看看JamieThomson的thispost.

  4. windows – SetupDiGetClassDevs是否与文档中的设备实例ID一起使用?

    有没有更好的方法可以使用DBT_DEVICEARRIVAL事件中的数据获取设备的更多信息?您似乎必须指定DIGCF_ALLCLASSES标志以查找与给定设备实例ID匹配的所有类,或者指定ClassGuid并使用DIGCF_DEFAULT标志.这对我有用:带输出:

  5. Windows Live ID是OpenID提供商吗?

    不,WindowsLiveID不是OpenID提供商.他们使用专有协议.自从他们的“测试版”期结束以来,他们从未宣布计划继续它.

  6. 如果我在代码中进行了更改,是否需要重新安装Windows服务?

    我写了一个Windows服务并安装它.现在我对代码进行了一些更改并重新构建了解决方案.我还应该重新安装服务吗?不,只需停止它,替换文件,然后重新启动它.

  7. 带有双引号的字符串回显使用Windows批处理输出文件

    我正在尝试使用Windows批处理文件重写配置文件.我循环遍历文件的行并查找我想要用指定的新行替换的行.我有一个’函数’将行写入文件问题是%Text%是一个嵌入双引号的字符串.然后失败了.可能还有其他角色也会导致失败.如何才能使用配置文件中的所有文本?尝试将所有“在文本中替换为^”.^是转义字符,因此“将被视为常规字符你可以尝试以下方法:其他可能导致错误的字符是:

  8. .net – 将控制台应用程序转换为服务?

    我正在寻找不同的优势/劣势,将我们长期使用的控制台应用程序转换为Windows服务.我们为ActiveMQ使用了一个叫做java服务包装器的东西,我相信人们告诉我你可以用它包装任何东西.这并不是说你应该用它包装任何东西;我们遇到了这个问题.控制台应用程序是一个.NET控制台应用程序,默认情况下会将大量信息记录到控制台,尽管这是可配置的.任何推荐?我们应该在VisualStudio中将其重建为服务吗?我使用“-install”/“-uninstall”开关执行此操作.例如,seehere.

  9. windows – 捕获外部程序的STDOUT和STDERR *同时*它正在执行(Ruby)

    哦,我在Windows上:-(实际上,它比我想象的要简单,这看起来很完美:…是的,它适用于Windows!

  10. windows – 当我试图批量打印变量时,为什么我得到“Echo is on”

    我想要执行一个简单的批处理文件脚本:当我在XP中运行时,它给了我预期的输出,但是当我在Vista或Windows7中运行它时,我在尝试打印值时得到“EchoisOn”.以下是程序的输出:摆脱集合表达式中的空格.等号(=)的两侧可以并且应该没有空格BTW:我通常在@echo关闭的情况下启动所有批处理文件,并以@echo结束它们,所以我可以避免将代码与批处理文件的输出混合.它只是使您的批处理文件输出更好,更清洁.

返回
顶部