Memory 如何在WinMobile6上启用ARMv6未对齐访问?

Memory 如何在WinMobile6上启用ARMv6未对齐访问?,memory,windows-mobile,assembly,arm,low-level,Memory,Windows Mobile,Assembly,Arm,Low Level,ARMv6引入了一个很好的特性--未对齐内存访问,这使得代码中的某些内容更加简单和快速。但微软只在winCE6中为其提供API。现在大多数PDA都基于WinMobile6(在CE5.x上)。默认情况下禁用未对齐的访问:( 我尝试在CP15寄存器中设置未对齐标志,但这不起作用-我在读取未对齐数据时发生崩溃 是否可以在WinMobile6上启用未对齐的访问 编辑:我找到了可以启用未对齐访问的工具,但我想从代码中打开/关闭它。它是。有一个未对齐访问标志(CP15控制寄存器中的U位)和一个对齐故障检测

ARMv6引入了一个很好的特性--未对齐内存访问,这使得代码中的某些内容更加简单和快速。但微软只在winCE6中为其提供API。现在大多数PDA都基于WinMobile6(在CE5.x上)。默认情况下禁用未对齐的访问:(

我尝试在CP15寄存器中设置未对齐标志,但这不起作用-我在读取未对齐数据时发生崩溃

是否可以在WinMobile6上启用未对齐的访问



编辑:我找到了可以启用未对齐访问的工具,但我想从代码中打开/关闭它。它是。

有一个未对齐访问标志(CP15控制寄存器中的U位)和一个对齐故障检测器(A位)。请确保您有正确的组合来执行您想要执行的操作。特别是,如果设置了A位,则所有未对齐的访问都将导致数据中止异常,即使您启用了U位。请查看该位置上的ARM文档-所有这些都可在上获得


特别是,您需要ARM体系结构参考手册中的A2.8.2节“ARMv6系统中的未对齐数据访问”。文档编号为ARM DDI 0100I。标题为“ARMv5体系结构参考手册”,但包含ARMv6的初始信息。我希望此链接能够正常工作:

如果由于STM32F7或Cortex-ARMv6、ARMv7或ARV8上的内存访问未对齐而导致出现硬故障,请参阅以下链接以获取有关此问题的应用说明表单IAR


请参阅此以了解详细信息。

谢谢您的回答!是的,我阅读了此dosc,但Windows Mobile似乎有一些限制。可能我必须从驱动程序或类似的程序运行代码。绝对可以。只能从专用模式访问CP15寄存器。我对Windows Mobile不太熟悉,但您可以尝试设置这些在你的引导加载程序或一些其他早期的汇编代码,然后希望操作系统不会打击他们回来为你以后。请提供外部链接的上下文,如中所述。