Привет, я новичок в сборке и начинаю знакомиться со сборкой ARM в сочетании с сопроцессором NEON в некоторых новых чипах ARM. Одна из вещей, которую я не знаю, как это сделать, — это математические функции высокого уровня, такие как sin, cos, tan, exp и т. д. Если я дизассемблирую код C, в котором есть эти математические функции, кажется, что они внешние.
Математические функции более высокого уровня в сборке ARM с NEON
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
но мне нужны только две функции, импортирующие всю библиотеку для двух функций? Да правильно. Вместо этого я решил использовать некоторый код, который я нашел в библиотеке, который будет делать то, что я хочу. У меня определенно нет математического опыта, чтобы написать это. Мне было интересно, есть ли лучший способ, чем полиномы более высокой степени, на всякий случай (я действительно ищу производительность здесь), но ответ теперь явно нет, поэтому я буду использовать более высокий полиномы степени
- person A Person; 07.08.2011
Обязательно используйте библиотеку (если вам нужны только две функции, их легко найти в Интернете). Написание правильных функций с плавающей запятой — удел избранных.
- person user786653; 07.08.2011
В качестве альтернативы, поскольку ваши требования невелики, а ваше приложение кажется простым, вы можете создать справочную таблицу для двух необходимых вам триггерных функций. Это будет быстро и легко.
- person Sparafusile; 08.08.2011