|
Turbo Pascal Twoje źródło wiedzy o Turbo Pascalu. |
|
|
|
|
|
 |
Nie 16:45, 05 Mar 2006 |
 |
Autor |
Wiadomość |
istredd`
Średnio zaawansowany
Dołączył: 14 Lut 2006
Posty: 37
Przeczytał: 0 tematów
Ostrzeżeń: 0/3 Skąd: Kraków
|
Temat postu: Dla szukających Turbo Pascala [download] |
|
|
Turbo Pascal jak już wspomniałem przedtem jest odpłatny. Jest jednak o wiele lepsza alternatywa : Free Pascal Compiler (FPC). Najpierw lista zmian [zapożyczona ze stref free pascala]:
1. Większa długość słowa
* Kompilator generuje kod 32 lub 64 bitowy. Procesory starsze od 386 nie są obsługiwane
* Typ integer ma długość równą słowu maszyny (32 lub 64 bity, zamiast 16). 16-bitowy integer nazywa się smallint
* funkcja Ofs() zwraca longint zamiast word
* Słowa kluczowe FAR, NEAR są ignorowane. W 32 bitowym kompilatorze nie mają sensu.
* Brak modułu 'overlay'. Nie jest potrzebny, bo w 32-bitowym środowisku dzielenie kodu na małe części nie jest potrzebne.
* Zbiory są zawsze 4 (do 32 elementów) lub 32 bajtowe (do 256 elementów); m. in. rzutowanie typów może nie działać.
* Rekordy są zawsze wyrównywane do granicy słowa (word, 16-bit); aby uzyskać wyrównywanie jak w TP trzeba użyć 'packed record' lub dyrektywy {$PACKRECORDS 1}. Wyłączenie wyrównywania spowolni dostęp do danych, może nie działać na procesorach innych niż x86
* Moduły kompilowane pod TP trzeba przekompilować (nie są binarnie zgodne).
2. Zaszłości systemowe
* INTERRUPT działa tylko pod DOS.
* Aby używać tablicy PORT, należy dodać moduł Ports - "uses Ports;", dostępny tylko dla Dos/Go32v2 i Linuksa.
* Dostęp do pamięci przez tablicę MEM[seg:ofs] (analogicznie MemW i MemL) jest możliwy tylko pod DOS/Go32v2.
3. Składnia - podprogramy
* Procedura exit może mieć parametr - zwracany wynik funkcji, np. exit(a+b)
* Nazwa funkcji wewnątrz jej samej uważana jest za odwołanie do zmiennej przechowującej wynik, a nie wywołanie rekurencyjne. Aby wywołać funkcję rekurencyjnie należy dodać po nazwie nawiasy, np. Fibonacci().
* Przy deklaracjach forward w definicji funkcji trzeba powtórzyć pełną listę parametrów, ponieważ dozwolone jest istnienie kilku różnych funkcji o tej samej nazwie, a innych parametrach (przeciążanie funkcji)
4. Obliczanie wyrażeń
* W FPC wyrażenie logiczne obliczane jest tylko do momentu, w którym jego wartość jest znana. W poniższym przykładzie funkcja typu logicznego Func nigdy nie będzie wywołana, ponieważ z faktu, że B ma wartość false wiadomo już, że A też musi mieć wartość false. Może to mieć znaczenie, gdy wywoływane funkcje powodują efekty uboczne.
W poniższym przykładzie funkcja Func nigdy nie zostanie wywołana:
* Kolejność obliczania wyrażeń może być inna niż w TP. Np. w przypisaniu: nie ma gwarancji, że g(2) będzie wywołana przed f(3), co może mieć znaczenie w przypadku istnienia efektów ubocznych funkcji.
5. Asembler
* Większość kodu asamblera trzeba przepisać ze względu na tryb 32 lub 64 bitowy
* Domyślnie kompilator używa składni asemblera AT&T, (jak asembler GNU). Typ składni można jednak zmienić na Intel (jak w TP) dodając parametr kompilatora -Rintel lub dyrektywę {$asmmode intel} w źródle programu.
* INLINE jest używane do kodu pascala zamiast maszynowego.
6. Obiekty
* Destruktor może być tylko jeden i nie może mieć parametrów.
* Funkcjonują równolegle dwa modele obiektów:
o ze słowam kluczowym OBJECT (TP)
o ze słowam kluczowym CLASS (DELPHI)
Bardziej polecany jest ten drugi, oparty jest na nim Lazarus i większość bibliotek FPC.
7. Biblioteki
* Free Vision, odpowiednik Turbo Vision, nie jest gotowy (problemy patentowe).
* Plik jest otwierany tylko do zapisu (z użyciem fmOutput) kiedy otwieramy go przez Rewrite. Aby móc z niego odczytywać, należy użyć Reset.
8. Inne
* Aby przypisać procedurę do zmiennej trzeba użyć operatora @
* Nie można powtarzać tych samych etykiet case. Był to błąd w TP, utrzymany w późnieszych wersjach ze względu na kompatybilność
* Zagnieżdżanie komentarzy dozwolone, ale kompilator pokazuje ostrzeżenie
* Dodano nowe słowa kluczowe, które mogą się pokrywać z identyfikatorami używanymi w TP.
* Parametry linii poleceń kompilatora są inne.
* Nie wszystkie dyrektywy kompilatora z TP są obsługiwane, dodano także dużo nowych
Poza tym Free Pascal kompiluje kod Delphi, obsługuje np. procedury przeciążone i inne. Jeżeli ktoś chce, odsyłam poniżej do strony z plikami. Ciekawostką jest to, że FPC jest skompilowany nie tylko na Windows, ale także na: Linux, MacOs, BeOS a nawet niektóre Pody :).
[link widoczny dla zalogowanych]
Post został pochwalony 0 razy
|
|
|
|
|
|
|
 |
 |
Sob 11:32, 17 Mar 2007 |
 |
Autor |
Wiadomość |
Names8
Początkujący
Dołączył: 17 Mar 2007
Posty: 2
Przeczytał: 0 tematów
Ostrzeżeń: 0/3
|
Temat postu: |
|
|
Catherine Zeta Jone Throatjob!
[link widoczny dla zalogowanych]
Post został pochwalony 0 razy
|
|
|
|
|
Nie możesz pisać nowych tematów Nie możesz odpowiadać w tematach Nie możesz zmieniać swoich postów Nie możesz usuwać swoich postów Nie możesz głosować w ankietach
|
|
|
|
|
|
|
fora.pl - załóż własne forum dyskusyjne za darmo
Powered by phpBB © 2001, 2002 phpBB Group
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|