2009-08-23 22 views
1

ARMv6引入了一個很棒的功能 - 未對齊的內存訪問,它使代碼中的一些事情更加簡單和快速。但微軟只在winCE6中爲它提供API。現在大多數PDA基於WinMobile6(在CE 5.x上)。和未對齊訪問在默認情況:(如何在WinMobile6上啓用ARMv6未對齊訪問?

禁用我已經嘗試設置對齊標誌CP15註冊,但這不工作 - 我有讀未對齊的數據崩潰

是否有可能實現。在WinMobile6對齊訪問


編輯:。我已經找到了工具,它可以使對齊訪問,但我想開/關它從我的代碼這是nueAdvancedProcessor

回答

1

有一個標誌訪問標誌(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

+0

感謝您的回答!是的,我讀過這個dosc,但看起來對Windows Mobile有一些限制。也許我必須從驅動程序或類似的東西運行代碼。 – zxcat 2009-10-03 10:54:36

+1

當然。只能從特權模式訪問CP15寄存器。我並不十分熟悉Windows Mobile,但可以嘗試在引導加載程序或其他早期彙編代碼中設置這些位,然後希望操作系統不會在稍後爲您重新啓動它們。 – 2009-10-03 15:46:28