Float razy float - zadanie - asembler.

0

Witam.
Mam pewnie zadanie które mnie nurtuje i nie mogę znaleźć lepszego rozwiązania.
Czy można je wykonać bez użycia 64 bitowych rejestrów(rax, rbx itp.)? Korzystając tylko z rejestrów 32 bitowych?

Ma ktoś jakiś pomysł? Sam napisałem kod, który niestety nie dla wszystkich liczb zwraca poprawny iloczyn. Na początku wrzucam sobie mantysy obu liczb do rejestrów, wstawiam jawną jedynkę na 23 bit i mnożę obie mantysy. Tutaj pojawia się problem bo iloczyn mnożenia dwóch liczb 32-bitowych jest 64-bitowy. Nie za bardzo wiem jak go znormalizować tak aby pasował do typu float, nie używając rejestru rax. Z resztą już nie mam problemów, wyznaczenie wykładnika to pestka.

Oto treść zadania:
user image

0

Jakieś wierutne bzdury...

rozkaz fld należy do FPU, więc jaki sens wymyślać jakieś 'ręczne mnożenie', skoro FPU robi to w mig:
fmul; no i cześć.

0

W zadaniu chodzi o to aby zrozumieć działanie fmula, czyli w jaki sposób mnoży się dwie liczby w formacie float. Więc nie do końca są to bzdury :)

0
Krwawy Młot napisał(a):

W zadaniu chodzi o to aby zrozumieć działanie fmula, czyli w jaki sposób mnoży się dwie liczby w formacie float. Więc nie do końca są to bzdury :)

Bzdury.

To o czym mówisz to tzw. emulacja FPU... na CPU, czyli za pomocą operacji na całkowitych.
Powiedz nauczycielowi że jest durniem... a w takim przypadku ma ci dać podpis - pod oceną którą sam sobie wpisujesz.

1 użytkowników online, w tym zalogowanych: 0, gości: 1