Podejrzenie funkcji

0

Od pewnego człowieka usłyszałem że nie da się zobaczyć jak działają funkcje i procedury w delphi, oprócz ich prze-assemblerowania.

Podam prosty przykład o co mi chodzi.
(zakładam że procedura "Clear" działa tak);
Memo1.Clear;

Memo1.Text := '';

Chyba każdy wie o co chodzi...

I tu jest moje pytanie.
Czy ktoś mógłby mi to przeassemblerować, dokładnie chodzi mi o funkcje "ArcTan2"

0
function ArcTan2(const Y, X: Extended): Extended;
asm
        FLD     Y
        FLD     X
        FPATAN
        FWAIT
end;
0

Od pewnego człowieka usłyszałem że nie da się zobaczyć jak działają funkcje i procedury w delphi, oprócz ich prze-assemblerowania.
Do większości funkcji w Delphi mamy dostępne źródła. Naciskamy Ctrl i klikamy na nazwę funkcji.
W wersjach trialowych nie zadziała.

0

Mam delphi 7 Enterprise i delphi 7 Personal'
I pisze mi "Unable to locate Math.pas" a dodałem moduł Math

Wyszukałem plik "Math.pas" i faktycznie jest w nim to co podał Misiekd, ale co to w ogóle znaczy

asm
        FLD     Y
        FLD     X
        FPATAN
        FWAIT
0

I pisze mi "Unable to locate Math.pas" a dodałem moduł Math
Masz skopaną konfigurację środowiska, skoro masz plik a nie może ci go znaleźć.

ale co to w ogóle znaczy
http://en.wikipedia.org/wiki/X86_instruction_listings#x87_floating-point_instructions

0

Jedyne co teraz z tego rozumiem to "PWAIT" a tak to kompletnie nic/
To "Floating Point Load" to chyba "Ładowanie punktu" albo "obciążenie punktu". Float to chyba ma coś wspólnego z Extended (FloatToStr).
Mógłby mi ktoś to wytłumaczyć?

0

tak w skrocie:
FLD Y - na stos koprocesora odklada wartosc Y, st0
FLD X - to samo tylko odklada X, st0 powyzsze idzie do st1
FPATAN - liczy tego tangensa na podstawie st0 i st1
FWAIT - sprawdza, czy wszystko ok

0

„floating point” to „liczba zmiennoprzecinkowa”, czyli double czy extended.

0

"Liczy tego tangesa"
Ale mi pomogłeś...

0

@TomRiddle nie bardzo rozumiem o co ci chodzi. Licząc tego tangensa wykorzystana zostaje instrukcja procesora FPATAN. Tak jak procesor ma instrukcje która umożliwia mu dodawanie (ADD), odejmowanie(SUB), dzielenie i resztę z dzielenia(DIV), mnożenie(MUL), tak sam ma też instrukcje która pozwala mu liczyć arcusa tangensa.
Można się więc domyślać że jest to implementowane w jakiś sprzętowy sposób.

0

Chodziło mi o to jak działa sama funkcja Tanges, a nie jak liczy ją procesor.
Ale już nie potrzebuje pomocy bo dociekłem jak działa.

Otóż trzeba narysować taki trójkąt, jaki dodałem w załączniku.

Tan(X) = A/B:

0

o_o To po co w ogóle o Delphi i deasemblacji pisałeś, skoro mogłeś od razu napisać ze chodzi ci o czysto matematyczne pytanie...
Ja się czasem zastanawiam czemu dziś w podstawówkach nie uczą ludzi jak zadawać pytania adekwatne do odpowiedzi którą chce sie uzyskać...

0

Bo myślałem że na forum programistycznym będzie łatwiej wejść do tego tangesa od delphi-strony niż od matematyki-strony :D

0

Jeszcze łatwiej ze strony wikipedii to tangensa wejść, lub z podręcznika do matmy ;p

0

Tym się kończy oddzielanie informatyki od matematyki i traktowanie programowania jako radosne klepanie kodu... Kandydat do Perełek.

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