Embedded 在运行时确定Windows CE操作系统是否针对特定处理器类型(例如ARMV4/ARMV4I/ARMV4T)构建

Embedded 在运行时确定Windows CE操作系统是否针对特定处理器类型(例如ARMV4/ARMV4I/ARMV4T)构建,embedded,arm,windows-ce,processor,Embedded,Arm,Windows Ce,Processor,是否有办法确定Windows CE操作系统是否针对ARMV4、ARMV4I或ARMV4T 我知道对coredll的IsProcessorFeaturePresent()API调用,但据我所知,它只允许您确定thumb指令集的存在 我真正想检测的是,O/S是否是在互操作(ARMV4I中的I)的情况下构建的,而不做任何假设。使用PF_ARM_THUMB无法区分ARMV4T和ARMV4I 谢谢 您可以尝试使用带有IOCTL\u处理器信息的KernelIoControl API来了解处理器的更多信息。您

是否有办法确定Windows CE操作系统是否针对ARMV4、ARMV4I或ARMV4T

我知道对coredll的IsProcessorFeaturePresent()API调用,但据我所知,它只允许您确定thumb指令集的存在

我真正想检测的是,O/S是否是在互操作(ARMV4I中的I)的情况下构建的,而不做任何假设。使用PF_ARM_THUMB无法区分ARMV4T和ARMV4I


谢谢

您可以尝试使用带有IOCTL\u处理器信息的KernelIoControl API来了解处理器的更多信息。

您可以尝试带有IOCTL\u处理器信息的KernelIoControl API来了解处理器的更多信息。

为什么不能对操作系统可以访问的函数始终使用
BX LR

通过启用互操作,Microsoft遵守了ARM的目标,即反对非互操作的ARM体系结构。所有ARM平台上都应支持16位和32位代码


你可以用C++尝试/catch来检查,你需要的是不是礼物。如果您可以使用不受支持的功能引发异常,这将起作用。但是很难提高它来检查互通性。

为什么不能简单地对操作系统可以访问的函数始终使用
BX-LR

通过启用互操作,Microsoft遵守了ARM的目标,即反对非互操作的ARM体系结构。所有ARM平台上都应支持16位和32位代码


你可以用C++尝试/catch来检查,你需要的是不是礼物。如果您可以使用不受支持的功能引发异常,这将起作用。但很难将其提升以检查互通。

我检查了此调用,在Windows CE 4.20设备(没有互通的ARMV4)上,处理器信息结构仍然指示设备通过处理器16b指令支持16位指令。我检查了此调用,并在Windows CE 4.20设备(没有互通的ARMV4)上进行了检查处理器信息结构仍然表示设备通过处理器16位指令支持16位指令。