確定Windows CE操作系統是否針對ARMV4或ARMV4I或ARMV4T。確定Windows CE操作系統是否針對特定處理器類型(例如,ARMV4/ARMV4I/ARMV4T)
但我知道coredll上的IsProcessorFeaturePresent()API調用,但據我所知,它只允許您確定是否存在拇指指令集。
我真正想要檢測的是O/S是否與互操作(我在ARMV4I中)構建 - 無需做出假設。使用PF_ARM_THUMB不會區分ARMV4T和ARMV4I。
謝謝!
確定Windows CE操作系統是否針對ARMV4或ARMV4I或ARMV4T。確定Windows CE操作系統是否針對特定處理器類型(例如,ARMV4/ARMV4I/ARMV4T)
但我知道coredll上的IsProcessorFeaturePresent()API調用,但據我所知,它只允許您確定是否存在拇指指令集。
我真正想要檢測的是O/S是否與互操作(我在ARMV4I中)構建 - 無需做出假設。使用PF_ARM_THUMB不會區分ARMV4T和ARMV4I。
謝謝!
您可以嘗試KernelIoControl API與IOCTL_PROCESSOR_INFORMATION關於處理器的更多信息。
爲什麼不能簡單地使用BX LR
總是用於可以通過OS訪問的函數?
通過啓用互通,微軟正在遵循ARM不推薦使用非交互式ARM體系結構的目標。所有ARM平臺都應該支持16位和32位代碼。
您可以使用C++ try/catch來檢查是否需要呈現的功能。如果您可以通過使用不支持的功能引發異常,這將起作用。但很難提出它來檢查互通。
我檢查了這個調用,並且在Windows CE 4.20設備上(ARMV4沒有互通),PROCESSOR_INFO結構仍然指示設備通過PROCESSOR_16BITINSTRUCTION支持16位指令。 –