Математические функции более высокого уровня в сборке ARM с NEON

Привет, я новичок в сборке и начинаю знакомиться со сборкой ARM в сочетании с сопроцессором NEON в некоторых новых чипах ARM. Одна из вещей, которую я не знаю, как это сделать, — это математические функции высокого уровня, такие как sin, cos, tan, exp и т. д. Если я дизассемблирую код C, в котором есть эти математические функции, кажется, что они внешние.


person A Person    schedule 05.08.2011    source источник
comment
Это для iOS (iPhone и т. д.) или для платформы ARM, отличной от Apple? Если это для iOS, посмотрите на платформу Accelerate.   -  person Paul R    schedule 05.08.2011
comment
Вероятно, таких инструкций нет, вместо этого они обычно реализуются как полиномы высокой степени. Вы можете дизассемблировать код библиотеки или поискать реализации libm.   -  person user786653    schedule 05.08.2011
comment
это не только для iOS, и я уже посмотрел на структуру Accelerate, и она не будет делать то, что я хочу. Я просмотрел немного кода из математической неоновой библиотеки, написанной на ассемблере, и я почти уверен, что они использовали полиномы высокой степени, мне просто интересно, был ли их способ лучше или что-то еще, но похоже, что я плохо придерживаюсь этого.   -  person A Person    schedule 05.08.2011


Ответы (1)


Кажется, лучшим вариантом для вас было бы просто связать другие библиотеки в вашем сборочном проекте. Я не вижу смысла воссоздавать колесо, если вы хотите точно такую ​​же функциональность.

Если это процесс обучения, то я предлагаю вам либо начать с чего-то более простого, поскольку похоже, что у вас нет опыта решения такой проблемы, либо изучить полиномы более высокой степени, которые предложил пользователь 786653.

person Sparafusile    schedule 07.08.2011
comment
но мне нужны только две функции, импортирующие всю библиотеку для двух функций? Да правильно. Вместо этого я решил использовать некоторый код, который я нашел в библиотеке, который будет делать то, что я хочу. У меня определенно нет математического опыта, чтобы написать это. Мне было интересно, есть ли лучший способ, чем полиномы более высокой степени, на всякий случай (я действительно ищу производительность здесь), но ответ теперь явно нет, поэтому я буду использовать более высокий полиномы степени - person A Person; 07.08.2011
comment
Обязательно используйте библиотеку (если вам нужны только две функции, их легко найти в Интернете). Написание правильных функций с плавающей запятой — удел избранных. - person user786653; 07.08.2011
comment
В качестве альтернативы, поскольку ваши требования невелики, а ваше приложение кажется простым, вы можете создать справочную таблицу для двух необходимых вам триггерных функций. Это будет быстро и легко. - person Sparafusile; 08.08.2011