memory - 如何在WinMobile6上启用ARMv6非对齐访问?

标签 memory windows-mobile assembly arm low-level

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/

相关文章:

windows-mobile - 如何检测移动设备上的 ActiveSync 连接?

紧凑 .net 和常规 .net 之间的 C# 序列化/反序列化

java - 使用 java asm 库检测 "import"

database - Redis:数据库大小与内存的比率?

linux - Linux中套接字的内存消耗和压缩行为

memory - 使用自定义 Lua 分配器计算内存使用情况,但其结果与 collectgarbage ('count' 不同)

PHP 脚本内存泄漏直至最终溢出

c# - System.Windows.Forms.Form.WndProc 没有定义

linux - NASM scanf 未定义引用 (LINUX)

使用内联 ASM 调用函数