[Comm] C++ rulezz :))
Dmitry E. Oboukhov
=?iso-8859-1?q?node_=CE=C1_avanto=2Empei=2Eac=2Eru?=
Пт Ноя 1 17:04:44 MSK 2002
Vitaly Lugovsky wrote:
>On Fri, 1 Nov 2002, Dmitry E. Oboukhov wrote:
>
>
>
>>>Ну так под конкретную платформу только кодогенератор присобачить надо.
>>>Всё остальное хозяйство можно и портабельным делать, заложившись лишь
>>>на наиболее общие параметры контроллеров.
>>>
>>>
>>>
>>кстати не под любой МК вообще ЯВУ приделаешь,
>>обычно ЯВУ так или иначе завязаны на стек,
>>
>>
>
> Вовсе не обязательно. Даже ЯВУ, требующие вроде бы GC, можно умно
>компилять, расставляя автоматом явные выделения/удаления. Пример -
>MLkit.
>
>
>
>>а есть контроллеры, у котороых стек возвратов только аппаратный
>>и небольшой глубины, а косвенная адресация
>>страшно убогая (один индексный регистр)
>>- PIC-процессоры например.
>>или вообще отсутствует.
>>
>>
>
> Всё это - совершенно не обязательно для ЯВУ. Более того, чем более
>высокоуровневый ЯВУ, тем проще его компилировать в обход ущербности
>железа.
>
>
весь вопрос еще и в ограниченности ресурсов ПЗУ
часто ограничения уж очень жесткие
хотя в общем я с Вами согласен
>
>
>>причем для таких процессоров пишут относительно
>>неплохие компиляторы с Си, хотя там почти все переменные
>>получаются статическими, а об указателях можно вообще не
>>думать.
>>
>>
>
> Какой же это тогда Си...
>
>
>
вот такой:
void my_function(uchar a)
{
uchar i;
for (i=0; i<20; i++) что-то;
...
}
а и i - статические переменные.
компилятор (линкер) при добавлении такой простой функции
при определенном стечении обстоятельств может начать
жаловаться на недостаток памяти...
когда у тебя всего 80 байт памяти, то начинаешь
думать, как её распределить между кучей функций.
особенно угнетают всякие инициализационные
функции, в которых нужны переменные по какой-то
причине.
когда памяти не хватает, приходится вытаскивать их
на глобальный уровень и это получается не программирование
а черт знает что!
Подробная информация о списке рассылки community