LINUX.ORG.RU

ARM + gcc = недогоняю

 , ,


1

2

Пишу небольшую числодробилку на неоне. Все вроде ок, кргоме команды vbic

пишу vbic.i8 d0, #0x0f, а gcc мне в ответ - «{standard input}:4792: Error: immediate value out of range — `vbic.u8 d0,#0x0f'»

Пишу: `vbic.i16 d0,#0x0f0f' - получаю ответ «{standard input}:4792: Error: immediate value out of range — `vbic.i16 d0,#0x0f0f'»

Как таки заставить gcc скомпилить этот vbic ?

★★★

Последнее исправление: AF (всего исправлений: 1)

Ответ на: комментарий от mky

Не надо ничего менять, у меня внутри сишного файла asm volatile("..."), так что все правильно!
Судя по документации, есть команда vbic.u8 d0,#0x0f. Вопрос в том, почему gcc не хочет ее переваривать?

AF ★★★
() автор топика
Ответ на: комментарий от Eddy_Em

Не, хост как раз х86_64. Но вот gcc собран не мной и собран для х86. Версия 4.8.1.

Сейчас попробую собрать с помощью gcc-4.8.4 для х86_64.

Upd. на 4.8.4 аналогичное поведение

AF ★★★
() автор топика
Последнее исправление: AF (всего исправлений: 1)
Ответ на: комментарий от vaulter

В документации написано немного мутно. С одной стороны вроде как можно i8, но с другой стороны вроде как непосредственное значение только і16 или і32.
Проблема в том, что у меня никакая комбинация не работает.

AF ★★★
() автор топика
Ответ на: комментарий от AF

vbic.i8 реально не существует, есть i16-i32, остальное м.б. как псевдооперация

возможно использование только 8 бит (все что для imm отведено) в одном байте 0x0f0f - требует два байта

Можно использовать пару:

   1 0000 3F0980F2 		vbic.i16	d0,#0x000f
   2 0004 3F0B80F2 		vbic.i16	d0,#0x0f00

io ★★
()
Ответ на: комментарий от io

Хм, так действительно работает, спасибо!

AF ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.