Отиди на
Форум "Наука"

За тези, които се интересуват какво представляват отвътре компилаторите


Recommended Posts

  • Потребители

Това, което ще ви предложа не е суха и безинтересна теория (всъщност теорията почти винаги е интересна, но само в случай че я разбираш добре). Става дума за реален минималистичен компилатор на C - наречен Small C. Този компилатор е създаден към 1980 година. В тема от форума си:

http://proglang.papagal.bg/forum/viewtopic.php?f=20&t=99

съм описал, как успях да открия сорсовете му отново. Това не е елементарно, защото в интернет много сайтове изчезват, а този компилатор го бях гледал преди доста време.

Да отбележа, че ако искате просто да изтеглите компилатора - това е препратката:

http://reocities.com/SiliconValley/hub/6461/smcnt30.zip

Има е книга към него, но която е представена като web страница. Изтегля се оттук:

http://drdobbs.com/web-development/184415519

но трябва след това да я извадите от iso образа на диска.

Link to comment
Share on other sites

  • Глобален Модератор

Хм.. Не е лоша идеята!

Link to comment
Share on other sites

  • Потребители

Хм.. Не е лоша идеята!

Ще видим дали е така. Оказва се, че Small C е не само компилатор, а частично орязан езика C. Ето например какво пише в параграф "COMPATIBILITY WITH FULL C" от книгата за езика:

lack of support for structures and unions

it supports -- integers, characters, pointers, and single dimension arrays of integers or characters

Мисля, че това са доста съществени ограничения!

Затова по-нататък виждам два варианта:

- Реализирам гореспоменатите липсващи възможности. Това е в случай, че компилаторът позволява това.

- Втори вариант е преход към TinyCC. Този компилатор е за C, а не Small C. Проблем е, обаче, че нямаме толкова добре описана книга, каквато намерих за Small C.

Small C има и този недостатък, че не виждам някой да продължава да се занимава с него. За TinyCC поне има mail списък и не лош сайт.

Link to comment
Share on other sites

  • Глобален Модератор

Ще видим дали е така. Оказва се, че Small C е не само компилатор, а частично орязан езика C. Ето например какво пише в параграф "COMPATIBILITY WITH FULL C" от книгата за езика:

lack of support for structures and unions

it supports -- integers, characters, pointers, and single dimension arrays of integers or characters

Мисля, че това са доста съществени ограничения!

Затова по-нататък виждам два варианта:

- Реализирам гореспоменатите липсващи възможности. Това е в случай, че компилаторът позволява това.

- Втори вариант е преход към TinyCC. Този компилатор е за C, а не Small C. Проблем е, обаче, че нямаме толкова добре описана книга, каквато намерих за Small C.

Small C има и този недостатък, че не виждам някой да продължава да се занимава с него. За TinyCC поне има mail списък и не лош сайт.

Ако се използува за онагледяване на теоретичните постановки за писане на компилатор, функционалността на представения език не е от кой знае какво значение. Просто с примери ще се свърже "сухата" теория с практиката.

Link to comment
Share on other sites

  • Потребители

Ако се използува за онагледяване на теоретичните постановки за писане на компилатор, функционалността на представения език не е от кой знае какво значение. Просто с примери ще се свърже "сухата" теория с практиката.

Да така е. Но на мен ми се иска да се използва не само за обучение, но и за research. В смисъл например: Измислям някакъв асемблерен език и компютърна архитектура на който да върви. Правя емулатор на този език. Модифицирам компилатора, за да компилира към такъв вид асемблер. Накрая компилирам реална програма (писана от мен) и тествам.

Точно последната стъпка е важната. Ни искам да тествам на някакъв елементарен пример, защото нещата са изродени. По-добре е да компилирам конкретна моя програма. А програми в които не ползвам 2-мерни масиви и структури - няма такива. Именно затова не ми трябва C++ - моите програми не са такива.

Между другото Small C ако е направен като хората, то сигурно би било възможно да се доработва. Все пак добре е така да се учиш да програмираш на даден език, че винаги да имаш възможност да доразработваш направеното. Още не съм се сблъскал с Small C кода, но когато стане ще си дам мнението...

Link to comment
Share on other sites

Напиши мнение

Може да публикувате сега и да се регистрирате по-късно. Ако вече имате акаунт, влезте от ТУК , за да публикувате.

Guest
Напиши ново мнение...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Зареждане...

За нас

Вече 17 години "Форум Наука" е онлайн и поддържа научни, исторически и любопитни дискусии с учени, експерти, любители, учители и ученици.

За своята близо двайсет годишна история "Форум Наука" се утвърди като мост между тези, които знаят и тези, които искат да знаят. Всеки ден тук влизат хиляди, които търсят своя отговор.  Форумът е богат да информация и безкрайни дискусии по различни въпроси.

Подкрепи съществуването на форумa - направи дарение:

Дари

 

 

За контакти:

×
×
  • Create New...