Кіріспе

Бағдарламалау тілінің кіші жиынтығы. Кіші C – ресурстары шектеулі микрокомпьютерлер мен кіріктірілген жүйелерге қолайлы C бағдарламалау тілінің кіші жиынтығы, сонымен қатар осы кіші жиынтықтың іске асырылуы. 1970 жылдардың соңы мен 1980 жылдардың басында микрокомпьютерлік жүйелер үшін алғашқы компилятор ретінде құнды болған бұл іске асырылу оқу мақсатында қолдануға жеткілікті қарапайым мысал ретінде де пайдалы болды. Рон Кейн Intel 8080 үшін Кіші C-де жазған түпнұсқа компилятор 1980 жылғы мамыр айындағы Dr. Dobb's Journal журналында жарияланды. Джеймс Е. Хендрикс бастапқы компиляторды жетілдіріп, кеңейтіп, «The Small C Handbook» еңбегін жазды. Рон, John Bass-тың Кіші C-ді әзірлеуге берген тіркелгісімен SRI International PDP 11/45 Unix жүйесінде Кіші C-ді бастапқы кодтан іске қосты. Берілген бастапқы код басқару рұқсатымен ашық қолжетімділікке шығарылды. Кіші C кішкентай компьютерлер үшін GCC-нің үлкен компьютерлер үшін маңыздылығымен салыстыруға болатын маңызды рөл атқарды. Unix-тегі аналогтары сияқты, компилятор құрастырушы кодты (assembler code) жасайды, оны қолданыстағы құрастырушы (assembler) машиналық кодқа аудару қажет. Кіші C – қайта бағдарланатын компилятор. Кіші C-ні басқа процессорға көшіру үшін артқы кодты (back end) жасайтын бөлім мен операциялық жүйе интерфейсіне арналған кітапхананы ғана мақсатты процессор үшін қайта жазу жеткілікті.

Тілдің кіші жиынтығы

1980 жылдың мамыр айында доктор Доббс журналында «8080 процессорлары үшін кішкентай C компиляторы» деген мақала жарияланды, онда Рон Кейн C тілінің бір бөлігіне арналған кішкентай компиляторды ұсынды. Компилятордың ең қызықты ерекшелігі оның кішкентай көлемінен басқа, ол жазылған тіл – ол құрастырған тіл болды. Бұл өзін-өзі компиляциялайтын компилятор еді! (Бұл бүгінде кең таралған болса да, сол кезде бұл жаңа идея еді.) Бір реттік қарапайым алгоритм арқылы оның компиляторы 8080 процессоры үшін ассемблер тілін жасады. Бірақ кішкентай болғандықтан, ол шектеулі мүмкіндіктерге ие болды. Ол тек символдарды, бүтін сандарды және екі типтің бір өлшемді массивтерін ғана танитын. Бір ғана циклды басқару операторы – while операторы болды. Бульдік операторлар болмағандықтан, олардың орнына & (AND) және | (OR) логикалық операторлары қолданылды. Бірақ осындай шектеулерге қарамастан, ол өте мүмкіндікті тіл болды және оны пайдалану, әсіресе ассемблер тілімен салыстырғанда, ләззат алатын еді. Жақсарту қажеттігін байқаған Рон, мені екінші нұсқасын жасауға ынталандырды, және 1982 жылдың желтоқсанында ол да доктор Доббс журналында жарияланды. Жаңа компилятор Кіші C-ге (1) кодты оңтайландыру, (2) деректерді бастамалау, (3) шартты компиляция, (4) сыртқы сақтау классы, (5) for, do/while, switch және goto операторлары, (6) біріктірілген тағайындау операторлары, (7) Буль операторлары, (8) бірліктердің толықтыру операторы, (9) блоктардағы жергілікті айнымалылар және (10) басқа да әртүрлі мүмкіндіктерді қосты. Содан кейін 1984 жылы Эрнест Пэйн екеуміз компилятор үшін CP/M үйлесімді орындалу уақыты кітапханасын жасап, жарияладық. Ол 80-нен астам функциядан тұрады және UNIX C Стандарттық кіріс-шығыс кітапханасындағы көптеген функцияларды қамтиды – CP/M ортасына қатыстылары. Бұл 2.1 нұсқасы болды және «Кішкентай C нұсқаулығының» тақырыбы болды.