首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >我可以放心地假设Windows安装总是小端的吗?

我可以放心地假设Windows安装总是小端的吗?
EN

Stack Overflow用户
提问于 2011-06-23 12:51:52
回答 2查看 42.6K关注 0票数 34

我正在Windows上编写一个用户空间文件系统驱动程序,字节顺序转换是我一直在处理的事情,因为这个特定的文件系统总是以小端字符顺序格式存储值,并且驱动程序希望(如果必要的话)为运行它的CPU转换这些值。然而,我发现自己在想,我是否甚至需要担心字节顺序转换,因为据我所知,桌面Windows只支持低端体系结构(IA32、x86-84等),因此,磁盘上的低端值在没有转换的情况下是非常好的。这种观察结果准确吗?如果是的话,假设Windows将始终在低端硬件上运行,这一假设是否普遍可接受?此外,有没有可能(在2011年)在大端仿真器或其他东西上运行Windows,这样甚至可以测试字符顺序问题?

编辑:为了更清晰,我的代码当前的工作方式,我在启动时执行字节顺序检查,然后每次我从磁盘加载一个值时,我通过一个内联函数运行它,如果体系结构是高字节顺序,该函数使用内部函数来更改字节顺序。问题是,我不知道我是否错过了其中一个或多个需要进行转换的地方,而查看我是否搞砸了的最简单方法是在大端架构上运行程序。所以我有兴趣知道(a)是否有必要做这些检查,因为Windows通常不在小端平台上运行(至少今天是这样),以及(b)我如何可能测试我的代码,因为我想不出一种在大端架构上运行Windows的方法,并且手动反转磁盘上的多字节值仍然涉及一个手动过程,我很可能会搞砸。

EN

回答 2

Stack Overflow用户

发布于 2011-06-23 13:07:26

你将看到的所有Windows版本都是小端的,是的。NT内核实际上运行在大端架构的even today上。

票数 8
EN

Stack Overflow用户

发布于 2011-06-23 13:08:30

更改后编辑问题:

A) No如果您的唯一目标是necessary x86或x64,则不需要检查字节顺序。在这种情况下,我甚至不会花时间检查字符顺序。

B)如果你想检查你的代码是否支持双端字节序,我建议你把它分成几个库,这些库本身就是跨平台可编译的。然后,在您最喜欢的支持big-endian的Linux版本上编译并运行代码,看看它是否工作。我还没有听说过任何编译器或软件可以检测双端问题。

原始响应:

据我所知,目前还没有支持大端的桌面或服务器版本的windows。安腾处理器(我相信它一直被称为IA64,而不是IA32,但我可能错了)有能力以高字节顺序运行,但Windows不支持它。

这并不是说Windows 8只会是低端的,因为Windows 8的目标是ARM处理器。

如果出于某些原因,你使用的是Windows (#ifdef,_WIN32)和大端( big-endian ),那么只需在从磁盘加载时反转数据结构,并始终以小端格式保存,这种格式要常见得多。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6449468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档