我正在尝试编译Tremolo对于iPhone。我已提取文件 bitwise.c bitwiseARM.s codebook.c dpen.s dsp.c Floor0.c Floor1.c Floor1ARM.s Floor_lookup.c framing.c info.capping0.c mdct.c mdctARM.s 杂项.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进行构建,但都没有帮助。
最佳答案
正如 Igor 所说,苹果的汽油叉是古老的并且想要:
- .global 替换为 .globl
- 所有说明均小写
- 替换“;”注释分隔符为“@”
- 地址导入的 stub 标签
我为 Tremolo .s 文件编写了一个预处理器 awk 脚本,以使它们能够被 Xcode 接受,我将通过 Robin 贡献该脚本。
或者,您可以尝试this .
关于iphone - 为 iPhone 构建 ARM 汇编器 vorbis 解码器库 'Tremolo',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2904597/