Кіріспе
Бағдарламалау тілінің кіші жиынтығы. Кіші 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) жасайтын бөлім мен операциялық жүйе интерфейсіне арналған кітапхананы ғана мақсатты процессор үшін қайта жазу жеткілікті.
Small C is both a subset of the C programming language, suitable for resource limited microcomputers and embedded systems, and an implementation of that subset. Originally valuable as an early compiler for microcomputer systems available during the late 1970s and early 1980s, the implementation has also been useful as an example simple enough for teaching purposes. The original compiler, written in Small C for the Intel 8080 by Ron Cain, appeared in the May 1980 issue of Dr. Dobb's Journal. James E. Hendrix improved and extended the original compiler, and wrote The Small C Handbook. Ron bootstrapped Small C on the SRI International PDP 11/45 Unix system with an account provided by John Bass for Small C development. The provided source code was released with management permission into the public domain. Small C was important for tiny computers in a manner somewhat analogous to the importance of GCC for larger computers. Just like its Unix counterparts, the compiler generates assembler code, which then must be translated to machine code by an available assembler. Small C is a retargetable compiler. Porting Small C requires only that the back end code generator and the library to operating system interface calls be rewritten for the target processor.
Тілдің кіші жиынтығы
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 нұсқаулығының» тақырыбы болды.