3

我正在尝试为 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 构建,但都没有帮助。

4

2 回答 2

7

正如 Igor 所说,Apple 的气叉是古老的,并且想要:

  • .global 替换为 .globl
  • 所有小写​​指令
  • 代替 ';' 带有“@”的评论分隔符
  • 地址导入的存根标签

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

或者,你可以试试这个

于 2010-10-04T14:43:05.950 回答
0

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

于 2010-08-27T19:29:56.140 回答