Мне нужно загрузить немедленное значение 0.5f (= 0.8 в HEX) в регистре NEON (или в регистре ARM, чем я могу VMOV), используя сборку.Загрузите немедленную плавучую точку в регистре ARM
Я прочитал ARM документ: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204h/Bcfjicfj.html Какие ссылки на: http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0204h/CIHGGEEB.html
Где они говорят, что вы можете загрузить с плавающей точкой:
Любое число, которое может быть выражено в виде +/- п * 2 -r, где п и г целые числа, 16 < < = п = 31, 0 < = г < = 7.
Поскольку 0,8 находится вне диапазон, я ожидаю, что мне нужно, чтобы загрузить HEX 1.8 и вычитать 1.0, но следующие инструкции не OK для компилятора:
VMOV.F32 d10, #0x1.0 \n\t
VMOV.F32 d10, #0x1.8 \n\t
Однако, используя 0,5 десятичное значение делает трюк, даже если она должна быть из диапазон:
VMOV.F32 d10, #0.5 \n\t
Использование значений HEX, как я могу выполнить ту же операцию?
Еще один вопрос: ожидается, что предыдущая команда VMOV.F32 загрузит значение в обеих 32-битных частях регистра d10 [0] и d10 [1] или нет?
0,5 находится в выражаемом непосредственном значении. Что заставляет вас думать, что это не так? –
В моем проекте я выражаю все сразу в HEX, для согласованности я хотел бы выразить 0.5 в HEX. –
Похоже, ваш компилятор не поддерживает hex fp. Я не удивлен; Я не знаю многих, которые это делают. –