Małe-C

Małe-C
Deweloperzy Rona Caina, Jamesa E. Hendrixa
Pierwsze wydanie 1980 ; 43 lata temu ( 1980 )
Napisane w Język programowania C
Typ Kompilator
Licencja Chronione prawami autorskimi, ale można je udostępniać

Small-C jest zarówno podzbiorem języka programowania C , odpowiednim dla mikrokomputerów i systemów wbudowanych o ograniczonych zasobach , jak i implementacją tego podzbioru. Pierwotnie cenny jako wczesny kompilator systemów mikrokomputerowych dostępnych w późnych latach siedemdziesiątych i wczesnych osiemdziesiątych, implementacja okazała się również użyteczna jako wystarczająco prosty przykład do celów dydaktycznych.

Oryginalny kompilator, napisany w języku Small-C dla Intel 8080 przez Rona Caina, pojawił się w numerze Dr. Dobb's Journal of Computer Calisthenics & Orthodontia z maja 1980 roku . James E. Hendrix udoskonalił i rozszerzył oryginalny kompilator oraz napisał The Small-C Handbook . Ron uruchomił Small-C w systemie Unix SRI International PDP 11/45 z kontem dostarczonym przez Johna Bassa do rozwoju Small C. Dostarczony kod źródłowy został udostępniony za zgodą administratora do domeny publicznej . [ potrzebne źródło ] Small-C było ważne dla małych komputerów w sposób nieco analogiczny do znaczenia GCC dla większych komputerów. Podobnie jak jego uniksowe , kompilator generuje kod asemblera , który następnie musi zostać przetłumaczony na kod maszynowy przez dostępny asembler .

Small-C to retargetowalny kompilator . Porting Small-C wymaga jedynie przepisania generatora kodu zaplecza i wywołań interfejsu biblioteki do systemu operacyjnego dla docelowego procesora.

Podzbiór języka

„W maju 1980 roku Dr. Dobb's Journal opublikował artykuł zatytułowany „A Small C Compiler for the 8080s”, w którym Ron Cain przedstawił mały kompilator dla podzbioru języka C. Najbardziej interesującą cechą kompilatora poza jego niewielkimi rozmiarami był język, w którym został napisany — ten, w którym został skompilowany. Był to samokompilator! (Chociaż jest to dziś powszechne, w tamtym czasie był to dość nowatorski pomysł.) Za pomocą prostego, jednoprzebiegowego algorytmu jego kompilator wygenerował języka asemblera dla procesora 8080. Ponieważ był mały, miał jednak swoje ograniczenia. Rozpoznawał tylko znaki, liczby całkowite i jednowymiarowe tablice dowolnego typu. Jedynym urządzeniem kontrolującym pętlę była instrukcja while. Nie było operatorów boolowskich, więc Zamiast tego użyto bitowych operatorów logicznych & (AND) i | (OR).Ale nawet z tymi ograniczeniami był to bardzo wydajny język i przyjemny w użyciu, zwłaszcza w porównaniu z asemblerem.

Uznając potrzebę ulepszeń, Ron zachęcił mnie do stworzenia drugiej wersji, która w grudniu 1982 roku ukazała się również w Dr. Dobb's Journal. Nowy kompilator rozszerzył Small C o (1) optymalizację kodu, (2) inicjowanie danych, (3) kompilację warunkową, (4) zewnętrzną klasę pamięci masowej, (5) instrukcje for, do/while, switch i goto, ( 6) kombinacje operatorów przypisania, (7) operatory boolowskie, (8) operator dopełnienia jedynki, (9) blokowe zmienne lokalne i (10) różne inne cechy. Następnie, w 1984 roku, Ernest Payne i ja opracowaliśmy i opublikowaliśmy bibliotekę wykonawczą kompatybilną z CP/M dla kompilatora. Składał się z ponad 80 funkcji i zawierał większość funkcji ze standardowej biblioteki we/wy UNIX C — te, które odnosiły się do środowiska CP/M. Stało się to wersją 2.1 i tematem The Small C Handbook.

Zobacz też

  • BDS C (1979) - kompilator C dla systemów Z80 i 8080
  • MISOSYS C (1985) - kompilator C dla TRS-80 (procesor Z80)
  • Tiny C (2002) - kompilator C dla wolnych komputerów x86 i ARM, które mają mało miejsca na dysku

Warianty małego C

Notatki

Linki zewnętrzne