
Re: Ретро ... (софтуер за компютър)
Най-добрият подход е като gcc - всичко е на модулен принцип и на сорс код. Има фронт-енд за различни езици, който не зависи от платформата и мачка всичко до псевдо код, не помня май RTL ли се казваше... Има си и бак-енд който бълва реалния код за конкретната платформа.
За нов таргет първо се прави бак-енда и веднага може да компилираш "някакъв" код. Казвам някакъв защото чистия компилатор при gcc е много беден и прост. Дори не поддържа всичко от Ц, а се разчита на много библиотечни функции. Така че втората стъпка е да се портнат стандартните Ц/Ц++ библиотечки за съответната платформа. По принцип стандартните библиотечки са на сорс код и имат "универсални" варианти, демек може и без портване, а просто да се прекомпилират с новия бакенд. Само че това не винаги е добро решение. Примерно за АРМ в newlib-a функцията за делене на long long ползва чисто софтуерно деление, не отчита факта че кура може да има инструкции за 32-битово деление и с тях може да се направи 64-битовото по-бързо.
След като се пуснат стандартните библиотечки вече може да се каже че има работещ компилатор и с него може да почне да се прави някакъв фърмуер, евентуално ОС, някакви драйвери и т.н. С две думи може да почне да се оживява...
Сега, ако се подкара нещо като файлова система с нужните за целта стекове и библиотеки може да се мисли за прехвърляне на развоя. В случая с gcc това значи да се прекомпилира самото гцц. Ако трябва да се прекомпилира в цялата му хубост, преди това трябва да се прехвърлят доста библиотеки с които има зависимости. Според мен това е много работа, освен ако новия хост не е с лайнуксо-подобен ОС, тогава повечето библиотеки вече ще ги има... Другия вариант е да се преконфигурира и да се окастри гцц-то, което също не е лесна работа.
Това е общо-взето... в карайния вариант се получават изпълними файлове или фърмуер за новия хардуер, прехвърлят се и сорсовете и бачкането може да продължи от новата платформа, а стария компютър да се изхвърли
