[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