Deep Blue C
From Atariki
Wersja z dnia 22:10, 15 lut 2009 Danos (Dyskusja | wkład) ← Previous diff |
Wersja z dnia 22:15, 15 lut 2009 Danos (Dyskusja | wkład) (→Ograniczenia) Next diff → |
||
Linia 1: | Linia 1: | ||
== Ograniczenia == | == Ograniczenia == | ||
- | Jeden z nielicznych kompilatorów języka C na [[Atari 8-bit|małe Atari]]. Jego składnia jest zbliżona do standardu ANSI C, z istotnymi ograniczeniami. Niedostępne są: | + | Jeden z nielicznych kompilatorów języka C na [[Atari 8-bit|małe Atari]]. Twórcą kompilatora jest John H. Palevich. Składnia dopuszczalna przez Deep Blue C zbliżona jest do standardu ANSI C, z istotnymi ograniczeniami. Niedostępne są: |
* struktury | * struktury |
Wersja z dnia 22:15, 15 lut 2009
Spis treści |
Ograniczenia
Jeden z nielicznych kompilatorów języka C na małe Atari. Twórcą kompilatora jest John H. Palevich. Składnia dopuszczalna przez Deep Blue C zbliżona jest do standardu ANSI C, z istotnymi ograniczeniami. Niedostępne są:
- struktury
- unie
- tablice wielowymiarowe
- liczby zmiennoprzecinkowe
- funkcje zwracające wartości typu innego niż int
- operator sizeof
- rzutowanie typów
Inne niestandardowe właściwości Deep Blue C:
- Ostatni człon (case lub default) klauzuli switch musi być zakończony jedną z instrukcji: break, continue lub return.
- Typ char jest zawsze bez znaku.
- Łańcuchy znakowe nie mogą być dzielone.
- Długość linii kodu źródłowego nie może przekraczać 79 znaków.
- Funkcja nie może mieć więcej niż 126 argumentów.
- Niedostępne są nawiasy klamrowe { i }, w zamian należy użyć sekwencji $( i $).
Możliwości
Środowisko Deep Blue C (DBC) zapewnia dostęp do następujących konstrukcji programowych [1]:
- Typy podstawowe: char, int, typ wskaźnikowy (pointer)
- Tablice jednowymiarowe
- Operatory jednoargumentowe: + - * & ++ -- ! $- (tylda)
- Operatory dwuargumentowe: + - * / % | ^ & == != < <= >= << >> <op>= && || ?: ,
- Słowa kluczowe: if, else, while, break, continue, return, for, do, switch, case, default
- Dyrektywy kompilatora: #define, #include
- Linker (konsolidator) z funkcją relokowania
- Stałe: szesnastkowe, ósemkowe, \ (backslash)
Biblioteka standardowa
Prawdziwie mocną stroną DBC są dołączone do środowiska biblioteki programistyczne. Zapewniają one niemal ten sam zestaw funkcji jak w Atari BASIC, oprócz zmiennych typu rzeczywistego. Poniżej przedstawiono podstawowe biblioteki dostępne podczas tworzenia programu [2]:
- AIO - biblioteka podstawowych funkcji wejścia/wyjścia. Praktycznie wymagana w każdym tworzonym programie
- DBC - biblioteka uruchomieniowa
- GRAPHICS - biblioteka graficzna. Tryby tekstowe i graficzne Atari oraz funkcje graficzne wzorowane na Atari Basic
- PMG - biblioteka grafiki grafiki Gracz-Pocisk (Player Missile Graphics)
- PRINTF - biblioteka obsługi konsoli
Użyteczny jest kod źródłowy ww. bibliotek znajdujący się razem z innymi plikami DBC.
Biblioteka funkcji matematycznych
Standardowy język C określa typ podstawowy float oraz zestaw funkcji dla obliczeń numerycznych. Próbą przybliżenia możliwości DBC do standardu jest biblioteka Mathlib autorstwa Franka Parisa. Zawiera ona się w dwóch plikach:
- MATHLIB.C - biblioteka funkcji podstawowych na liczbach zmiennoprzecinkowych, wykorzystująca pakiet matematyczny w ROM Atari
- TRIG.C - biblioteka funkcji trygonometrycznych
Szybkość działania
Kompilator DBC nie tworzy kodu maszynowego dla procesora 6502. Wynikiem jego działania jest kod pośredni (C-code), który jest następnie wykonywany przez interpretator kodu pośredniego [3]. Jest to głównym powodem niewielkiej szybkości działania kodu wykonywalnego tworzonego za pomocą DBC.
Wersje rozwojowe
Środowisko DBC doczekało się kolejnych wersji, z których każda zapewnia większą funkcjonalność stosunku do poprzedniej. Są to:
- ACE C - podobne ograniczenia jak w DBC oraz korzystanie z kodu pośredniego dla interpretatora "C-code". Niektóre biblioteki zostały zakodowane ponownie przy użyciu języka assemblera. Ciekawym dodatkiem jest kompilator optymalizujący FAST.COM, który według autora ma zwiększać szybkość działania programu wynikowego o 20-30%.
- CC 8 - W porównaniu do DBC i ACE C jest to środowisko znacznie rozbudowane. Dostępne są m.in. typy zmiennoprzecinkowe, tablice wielowymiarowe, struktury, unie i typy wyliczeniowe. Rozszerzono zbiór poleceń preprocesora. Funkcje mogą zwracać już inne typy poza standardowym "int", tj. również "char" i "pointer". Dostępna jest biblioteka rozszerzająca CC 8 o obsługę dynamicznego zarządzania pamięcią - ALMLIB, autorstwa Marka Millera.
Dostępność
Podstawowy pakiet DBC jest do pobrania na stronie Atari Archives. Nie jest określony jawnie status tego pakietu, ale sądząc po sposobie działania ludzi z Atari Archives powinien mieć status publiczny. Na powyższej stronie udostępniono również kod źródłowy całego środowiska programistycznego. Pakiet funkcji matematycznych Mathlib jest niedostępny publicznie, powodem jest brak kontaktu z autorem tej biblioteki, Frankiem Parisem [4].