为iPhone构建ARM汇编程序vorbis解码器lib'Tremolo'

时间:2010-05-25 12:36:28

标签: iphone arm assembly vorbis

我正在尝试为iPhone编译Tremolo。我已经把文件拉进了bitwise.c bitwiseARM.s codebook.c dpen.s dsp.c floor0.c floor1.c floor1ARM.s floor_lookup.c framing.c info.c mapping0.c mdct.c mdctARM.s misc将.c res012.c转换为新目标,添加以下自定义设置:

GCC_PREPROCESSOR_DEFINITIONS = _ARM_ASSEM_
GCC_C_LANGUAGE_STANDARD = gnu99
GCC_THUMB_SUPPORT = YES

...但是一旦xcode到达第一个汇编程序文件bitwiseARM.s,就会出现这样的错误:

/tremolo/bitwiseARM.s:3:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:3:Rest of line ignored. 1st junk character valued 111 (o).
/tremolo/bitwiseARM.s:4:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:4:Rest of line ignored. 1st junk character valued 111 (o).
/tremolo/bitwiseARM.s:5:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:5:Rest of line ignored. 1st junk character valued 111 (o).
/tremolo/bitwiseARM.s:6:Unknown pseudo-op: .global
/tremolo/bitwiseARM.s:6:Rest of line ignored. 1st junk character valued 111 (o).
/tremolo/bitwiseARM.s:11:bad instruction `STMFD r13!,{r10,r11,r14}'
/tremolo/bitwiseARM.s:12:bad instruction `LDMIA r0,{r2,r3,r12}'
/tremolo/bitwiseARM.s:16:bad instruction `SUBS r2,r2,r1'
/tremolo/bitwiseARM.s:17:bad instruction `BLT look_slow'
/tremolo/bitwiseARM.s:19:bad instruction `LDR r10,[r3]'

我可以谷歌的第一个错误,并将.global更改为.globl修复了第一个错误,但我仍然得到错误的指示,我不明白为什么。谷歌搜索ARM指令集,上面的说明对我来说是有效的。我试过切换拇指支撑,只用armv7代替armv6,但没有帮助。

2 个答案:

答案 0 :(得分:7)

正如伊戈尔所说,苹果公司的天然气分支是古老的,并希望:

  • .global取代.globl
  • 所有小写的说明
  • 替换';'评论分隔符'@'
  • 地址导入的存根标签

我为Tremolo .s文件编写了一个预处理器awk脚本,使它们可以被Xcode接受,我将通过Robin回馈。

或者,您可以尝试this

答案 1 :(得分:0)

似乎它正在尝试在Thumb模式下编译bitwiseARM.s(例如,Thumb使用PUSH而不是STMFD SP!,)。我不确定Apple的气体支持哪些指令(它基于一些非常古老的分支),但尝试在文件的开头添加.arm.code32