代码之家  ›  专栏  ›  技术社区  ›  nevyn

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

  •  3
  • nevyn  · 技术社区  · 14 年前

    我在试着编译 Tremolo 对于iPhone。我已将文件按位.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
    

    /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修复了第一个错误,但我仍然得到错误的指令,我不明白为什么。在google上搜索ARM指令集,上面的指令对我来说是有效的。我试过切换拇指支撑,只为armv7而不是armv6构建,但都没有用。

    2 回复  |  直到 14 年前
        1
  •  7
  •   shogsbro    14 年前

    正如伊戈尔所说,苹果的天然气之叉由来已久,它想要:

    • .global替换为.globl
    • 所有指令均为小写
    • 地址导入的存根标签

    或者,你可以试试 this

        2
  •  0
  •   Igor Skochinsky    14 年前

    它似乎试图在Thumb模式下编译bitwiseARM.s(例如Thumb使用 PUSH STMFD SP!, ). 我不确定苹果的gas支持什么指令(它是基于一些非常古老的fork),但是试着加上 .arm .code32 在文件的开头。

    推荐文章