Да, NEON и регистры VFP являются общими. Это упрощает поддержку контекстной коммутации операционной системы, так как любая ОС, осведомленная о VFP, также правильно обрабатывает NEON.
Небезопасно связывать код, созданный для softVFP, с кодом, созданным для аппаратного VFP, потому что они помещают аргументы функции/результаты в разные регистры - использование NEON очень похоже на использование аппаратного VFP там, где это необходимо.
Есть специальный случай, хотя вам нужно связать с библиотеками SoftVFP, но вы знаете, что ваш SoC поддерживает его (вы знаете это? Есть много A8 без NEON). Частный случай называется softvfp +. Как это работает, аргументы функции передаются в целочисленных регистрах, но внутри функций компилятор может использовать FPU, или вы можете использовать NEON. Для компилятора ARM, ориентированного на CortexA8 с NEON, вы хотите использовать «--fpu = softvfp + vfpv3»
Посмотрите это для некоторых параметров компилятора ARM, связанных с этим. У многих других компиляторов есть аналогичные переключатели.
Для RVCT3.x ARM и выше компиляторов, вы хотите (http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0491c/CIHCJIFE.html):
softvfp + VFPv3
Выбор аппаратных средств вектор с плавающей точкой блока, соответствующую VFPv3, с помощью программного обеспечения с плавающей точечная связь. Выберите этот параметр, если вы взаимодействуете с Thumb-кодом с кодом ARM в системе, которая реализует модуль VFPv3.
Для GCC вам понадобится «-mfloat-abi = softfp», и я думаю: «-mfpu =« neon ». Из НКУ руководства (http://gcc.gnu.org/onlinedocs/gcc/ARM-Options.html):
-mfloat-аби = имя
Указывает с плавающей запятой ABI использовать. Допустимые значения: «soft», «softfp» и «hard». Указание «мягких» побуждает GCC генерировать вывод, содержащий вызовы библиотеки для операций с плавающей запятой. «Softfp» позволяет генерировать код с использованием аппаратных команд с плавающей запятой, но при этом использует соглашения о вызове soft-float. «Hard» позволяет создавать инструкции с плавающей запятой и использует специальные соглашения о вызовах FPU.
Значение по умолчанию зависит от конкретной конфигурации цели. Обратите внимание, что ABI с жестким поплавком и мягким поплавком не совместимы с каналами; вы должны скомпилировать всю вашу программу с тем же ABI и установить связь с совместимым набором библиотек.
Тег VFP здесь, в StackOverflow, означает «Visual FoxPro», язык программирования и базу данных. Вероятно, не имеет отношения к вашему вопросу. –
Спасибо. Я отредактировал свой вопрос – user1116700