Мне было поручено написать простое приложение в смешанном C/ASM, которое должно использовать математический сопроцессор.x87 Инструкции FPOP и FCOM - как это работает?
Функциональный цилиндр (float x, float y, float z), который возвращает 1, если заданная точка находится внутри цилиндра (цилиндр имеет основание при x = 0, y = 0, радиус = 5 и высоту = 10) и 0, если это не так.
Итак, выглядит просто. Проверьте, находится ли z в пределах < 0,10>, а затем проверьте, есть ли x^2 + y^2 < 25.
Но мои знания о x87 равны нулю.
Есть все, что я написал.
_cylinder PROC
push ebp
mov ebp, esp
sub esp,8 ; I can't use .data in the application, so I reserve some space on the stack for numbers 10 and 25
mov [esp],10
mov [esp+4],25
finit
fldz
fld [ebp+8]
;here i get stuck
add esp, 8
pop ebp
_cylinder ENDP
Так что я застрял. Итак, я пытаюсь найти, какие инструкции я могу использовать в приложении. И там я застреваю, потому что каждый список учебников/инструкций, которые я нахожу в сети, написан так плохо, что я ничего не могу понять.
Вопрос в том, что происходит, когда я что-то высказываю из математического сопроцессора? Где я могу найти всплывающее значение? Как он преобразуется с 80-битного значения в 32-битный (если он это делает, конечно) Другой вопрос: как работает FCOM (FCOMP для поп-варианта)? Он сравнивает, что к чему (от st0 до st1 или st1 до st0?), И где я могу увидеть, меньше или равно значение/больше?
Спасибо за помощь!
Перед тем, как получить слишком глубоко, пожалуйста, рассмотрите возможность использования SSE2 математику вместо x87. С гораздо проще работать (вы можете использовать регистры вместо стека), имеет больше доступных функций и, как правило, быстрее. – duskwuff
Что сказал duskwuff. 'x87' эффективно устаревает, и очень мало оснований для того, чтобы новое программное обеспечение предназначалось для него. –
@ Stephen - «устарел» от некоторой ОС, а не от процессора, поставщиков (но даже там, все еще поддерживается). Причины использования: например, 80-битная расширенная точность и трансцендентные математические функции. – PhiS