FPU это вам не сказки!
Все микроконтроллеры и процессоры, построенные на ядре ARMv7, имеют в своём составе блок вычисления с плавающей точкой.
Это достаточно нехитрый математический сопроцессор, выполняющий несколько простых функций.
Хотя вычисление корня всегда было проблемой для обычных камушков. А тут вам пожалуйста.
Но сколько я пишу на ассемблере, ни разу не встречались задачи, где мог бы понадобиться такой сопроцессор.
С плавающей точкой работать приходилось, но всё делалось гораздо проще, без каких-либо проблем с точностью.
Тем не менее, сопроцессор в камушке есть, за него деньги уплачены, давайте что ли включим.
Что бы поднять математический сопроцессор, требуется всего один шаг - установить биты в регистре CPACR.
MOV32 R0, CPACR
LDR R1, [R0]
ORR R1, R1, (0xF << 20)
STR R1, [R0]
Заработало. Теперь вы математик.
MOV32 R1, 0x3FDD70A4 @ 1.73
VMOV S2, R1 @ Передать число в регистр сопроцессора
MOV32 R1, 0x403D70A4 @ 2.96
VMOV S3, R1
VDIV.F32 S1, S2, S3 @ Разделить: S1=S2/S3
VMOV R1, S1 @ R1 теперь = 0x3F159F23 или ~0.584459 - вот именно, что приблизительно!
Смотрите, не ошибитесь!
Скачайте
простой конвертер для IEEE 754.
Существует так же множество
онлайн конвертеров.