Сборка ARM-ассемблера vorbis-декодера lib 'Tremolo' для iPhone - PullRequest
3 голосов
/ 25 мая 2010

Я пытаюсь скомпилировать Тремоло для 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 в новую цель добавлены следующие пользовательские настройки:

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 ]

7 голосов
/ 04 октября 2010

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

  • .global заменить на .globl
  • все инструкции в нижнем регистре
  • replace ';'разделитель комментариев с '@'
  • метками-заглушками для импорта адресов

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

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

0 голосов
/ 27 августа 2010

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

...