ARMv6 引入了一个很棒的功能 - 未对齐的内存访问,这使得代码中的某些内容变得更加简单和更快。但微软只在winCE6中提供了API。现在大多数 PDA 都基于 WinMobile6(基于 CE 5.x)。默认情况下禁用未对齐访问:(
我尝试在 CP15 寄存器中设置未对齐标志,但这不起作用 - 我在读取未对齐数据时发生崩溃。
是否可以在 WinMobile6 上启用未对齐访问?
编辑:我找到了该工具,它可以启用未对齐的访问,但我想从我的代码中打开/关闭它。这是nueAdvancedProcessor .
最佳答案
有一个未对齐访问标志(CP15 控制寄存器中的 U 位)和一个对齐错误检查器(A 位)。确保您拥有适合您想做的事情的正确组合。特别是,如果设置了 A 位,则所有未对齐的访问都将导致数据中止异常,即使您设置了 U 位。查看有关该内容的 ARM 文档 - 所有这些都可以在 http://www.arm.com 上找到。 .
特别是,您需要 ARM 体系结构引用手册中的第 A2.8.2 节“ARMv6 系统中的未对齐数据访问”。文档编号 ARM DDI 0100I。它的标题是“ARMv5 架构引用手册”,但包含初始 ARMv6 信息。我希望这个链接有效:http://infocenter.arm.com/help/topic/com.arm.doc.ddi0100i/index.html
关于memory - 如何在WinMobile6上启用ARMv6非对齐访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1318844/