有没有办法确定 Windows CE 操作系统是否针对 ARMV4 或 ARMV4I 或 ARMV4T。
我知道 coredll 上的 IsProcessorFeaturePresent() API 调用,但据我所知,它只允许您确定拇指指令集的存在。
我真正想要检测的是,如果 O/S 是通过互通构建的(ARMV4I 中的 I)——而不做任何假设。使用 PF_ARM_THUMB 不会区分 ARMV4T 和 ARMV4I。
谢谢!
有没有办法确定 Windows CE 操作系统是否针对 ARMV4 或 ARMV4I 或 ARMV4T。
我知道 coredll 上的 IsProcessorFeaturePresent() API 调用,但据我所知,它只允许您确定拇指指令集的存在。
我真正想要检测的是,如果 O/S 是通过互通构建的(ARMV4I 中的 I)——而不做任何假设。使用 PF_ARM_THUMB 不会区分 ARMV4T 和 ARMV4I。
谢谢!
您可以尝试使用带有 IOCTL_PROCESSOR_INFORMATION 的 KernelIoControl API 来了解有关处理器的更多信息。
为什么不能简单地使用BX LR
always 可以被操作系统访问的功能?
通过启用互通,Microsoft 符合 ARM 弃用非互通 ARM 架构的目标。所有 ARM 平台都应支持 16 位和 32 位代码。
您可以使用 C++ try/catch 来检查是否需要提供的功能。如果您可以使用不受支持的功能引发异常,这将起作用。但是很难提高它来检查互通性。