英语轻松读发新版了,欢迎下载、更新

ARM汇编求教

Onetaway 发布于 2013年12月03日
无人欣赏。

正在做一个应用,底层使用汇编,该汇编分为i386 和arm还有其他,我的程序在模拟器中运行正常,也就是走i386汇编没问题,但是同一个工程,运行到iPad4上,经调试跟踪,问题出在arm汇编的部分,该部分执行完之后结果有误,所以错误。我也查了资料,有说苹果的处理器不是标准的arm架构,默认指令集是thumb2,我的other C Flag也改过。但是依然不对。。。。求大神指点

共12条回复
tinyfool 回复于 2013年12月03日

你这个跟没说一样啊

具体问题是什么?

tinyfool 回复于 2013年12月03日

还有一个问题,你为什么需要用汇编呢?

Onetaway 回复于 2013年12月03日

1楼 @tinyfool OK,情况是这样。我现在做的是一个数据加密解密的客户端,公司原本是只有windows平台的,我在做的是iOS平台的客户端,原本windows平台的加解密部分有使用汇编代码,故我这里也需要使用,不然是解密不了用windows客户端加密的密文的。我使用标准C++和标准C语言,改写的windows平台的代码使其加解密部分可以在iOS平台使用。现在在模拟器环境下已经成功。即可以解密使用windows客户端加密的密文。但是该工程我运行在iPad4就会失败,原因就是我上面说的,在模拟器里面执行的是i386的汇编代码,而在真机中是arm汇编代码。该汇编代码是大数变换bignum.h。网上可以找到的,不是我写的,其中的arm部分说支持armv3+。如觉得不清楚,郝大大请告知,我再继续描述

tinyfool 回复于 2013年12月03日

3楼 @Onetaway 汇编我也不是很熟悉

不过,不同的iOS设备在汇编层面,你可能确实要弄清楚一些,比如什么是Armv6, Armv7之类的问题

我帮你在微博转发吧

Onetaway 回复于 2013年12月03日

4楼 @tinyfool 恩,谢谢郝大了,而且我后来查资料得知苹果的处理器芯片是经过ARM公司授权的,苹果公司自己可以随意定制和修改的,所以我才怀疑那个汇编是按照标准ARM指令集写的,所以如果到了非标准ARM架构的芯片上就运行不正确了,所以我也就快要挂了。。。不过还是谢谢郝大大了

pinxue 回复于 2013年12月03日

xcode5 的话,在 Log Navigator 里可以展开看一下相关文件的编译命令。

那个汇编你还是要搞清楚是用哪个指令集写的,ARMv3 的指令集相当老了,thumb指令是 ARMv4T 指令集才引入的,然后相应的设置编译参数,怀疑需要 -mno-thumb 。

Apple 的处理器是在实现架构上修改,指令集是标准的。

Onetaway 回复于 2013年12月03日

6楼 @pinxue 谢谢解答

Onetaway 回复于 2013年12月03日

6楼 @pinxue -mno-thumb我在other C Flag那里加了还是不对,我是Xcode 4.6,-mon-thumb意思就是按照arm指令集编对吧?我还试了-marm。。。都不起作用啊 亲

Onetaway 回复于 2013年12月03日

6楼 @pinxue 而且我觉得那个汇编代码是用来做大数变换用的,而且注释上说明了兼容armv3+的芯片,所以我觉得代码应该是没有问题的,总不至于ARM公司自己后出的芯片不向前兼容吧。。。我用了arm指令集和thumb指令集编,结果都不对,大神给指点一下吧

pinxue 回复于 2013年12月03日

建议你到 wikipedia 上扫一眼 arm 指令集的介绍,这样有一些基本的概念。你要先确认这些代码里的指令倒底有没有用到 thumb,虽然注释上说兼容 ARMv3+,但是我也不知道作者有没有测试过,我就碰到过给 ARMv6 写的代码里用到 ARMv6T2指令的。其次看 xcode 编译指令是不是正确。最重要的是,所谓的出错是什么现象?如果没有 SIGILL 说明没有异常指令。如果只是运算结果不对,倒有一点thumb代码在arm模式执行或者反过来的可能性,不过也有可能代码里对处理器做了什么不恰当的假设。

顺便说一下,如果算法你知道的话,直接用一个 C 的版本应该就行了,ARMv3 的汇编版本在这种纯计算上能有多少性能提升呀,编译器生成 v7+Neon 的性能有可能更好。

Onetaway 回复于 2013年12月03日

10楼 @pinxue 好的 很感谢,然后我说的出错就是运算结果不对,并没有SIGILL异常

玉楼 回复于 2013年12月03日

品高人出马,一个顶俩。:D

本帖有12个回复,因为您没有注册或者登录本站,所以,只能看到本帖的10条回复。如果想看到全部回复,请注册或者登录本站。

登录 或者 注册
[顶 楼]
|
|
[底 楼]
|
|
[首 页]