Windows Phone 8上的ARM NEON程序集无法正常工作
发布时间:2020-12-14 02:45:36 所属栏目:Windows 来源:网络整理
导读:我试图在一个.s文件中调用一个在ARM NEON程序集中编码的函数,如下所示: AREA myfunction,code,readonly,ARM global fun align 4fun push {r4,r5,r6,r7,lr} add r7,sp,#12 push {r8,r10,r11} sub r4,#64 bic r4,r4,#15 mov sp,r4 vst1.64 {d8,d9,d10,d11},[r
我试图在一个.s文件中调用一个在ARM NEON程序集中编码的函数,如下所示:
AREA myfunction,code,readonly,ARM global fun align 4 fun push {r4,r5,r6,r7,lr} add r7,sp,#12 push {r8,r10,r11} sub r4,#64 bic r4,r4,#15 mov sp,r4 vst1.64 {d8,d9,d10,d11},[r4]! vst1.64 {d12,d13,d14,d15},[r4] [....] 我正在这样组装: armasm.exe -32 func.s func.obj 不幸的是,这不起作用,当我尝试调用该函数时,我收到非法指令异常.当我使用dumpbin.exe反汇编.obj时,它看起来像是Thumb代码一样反汇编,尽管程序集中有ARM指令(参见上面的代码). 我怀疑在Thumb模式下调用该函数,并且默认情况下在Windows上假定所有函数都处于Thumb模式.虽然看不到任何关于此的信息. 有谁知道这里发生了什么? 编辑:这也发生在Microsoft Surface上 解决方法
默认情况下,VS 2012会为Windows RT和Windows Phone 8生成缩略图代码,因此您可能会因从拇指代码调用arm代码而导致错误.您有两种选择:
1.在调用函数之前从拇指模式切换到手臂模式(可以使用BX asm指令),或者 2.您可以尝试使用ARM / NEON内在函数在C中重写您的NEON代码 – 它们受VS 2012支持.只需包含“arm_neon.h”即可. 有关ARM内在函数参考,请查看以下链接: http://msdn.microsoft.com/en-us/library/hh875058.aspx 对于NEON内在参考,请查看此链接: http://infocenter.arm.com/help/topic/com.arm.doc.dui0491c/DUI0491C_arm_compiler_reference.pdf 来自上述链接的这些NEON内在函数通常由VS 2012支持,但可能存在一些小的差异 – 如果不确定,请查看“arm_neon.h”包含以查找. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows 2008 服务管理器刷新失败 异常来自hresult 0x80070
- windows – 尝试从Vim编译和调试C语言
- Windows系统CMD下常用命令
- 如何在Windows上的Monodevelop中启用vi模式
- windows-phone-8 – 覆盖WP8导航 – 在PhoneApplicationPag
- Windows Server与常规Windows有何不同?
- Tridion工作流程插件在Microsoft Visio 2010中不活动
- windows-server-2012-r2 – ReFS是否已准备好在Hyper-V 201
- windows-server-2012-r2 – 如何在IIS8,5中限制对网站的访问
- Microsoft SQL Server 2008 – 日期
推荐文章
站长推荐
热点阅读