2010-05-25 1 views
3

Я пытаюсь скомпилировать Tremolo для iPhone. Я потянул файлы 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 в новую цель, добавлены следующие пользовательские настройки:Строительство ARM ассемблер vorbis decoder lib 'Tremolo' для iPhone

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]' 

Первая ошибка, с которой я мог пойти в Google, и изменение .global на .globl зафиксировали первые ошибки, но я все равно получаю плохие инструкции, и я не понимаю почему. Googling для набора инструкций ARM, приведенные выше инструкции выглядят действительными для меня. Я попытался перевернуть поддержку большого пальца и построить для armv7 вместо armv6, но ни один из них не помог.

ответ

7

Как говорит Игорь, вилка от Apple газа является древней и хочет:

  • .global заменен .globl
  • всех инструкций в нижнем регистре
  • замещает ';' Комментарий Сепаратор с «@»
  • заглушки этикетки для импорта адресов

Я написал сценарий AWK предварительно процессор для тремоло .s файлы, чтобы сделать их приемлемыми для Xcode, что я буду способствовать обратно через Робин.

В качестве альтернативы, вы можете попробовать this.

+0

Этот скрипт доступен где-то в наличии? Я пытаюсь собрать тремоло для iOS, но пока не повезло. – Peterdk

+0

В качестве обходного пути вы можете удалить все файлы .s из библиотеки и построить с флагом c «ONLY_C = 1». Таким образом, вы получаете рабочий декодер ogg, который работает с ov_open_callbacks. – Peterdk

0

Похоже, что он пытается скомпилировать bitwiseARM.s в режиме Thumb (например, Thumb использует PUSH вместо STMFD SP!,). Я не уверен, какие директивы поддерживает газ от Apple (он основан на какой-то действительно древней вилке), но попробуйте добавить .arm или .code32 в начале файла.