From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Message-ID: <3DC289FC.6080805@avanto.mpei.ac.ru> Date: Fri, 01 Nov 2002 17:04:44 +0300 From: "Dmitry E. Oboukhov" User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020826 X-Accept-Language: ru, en-us, en MIME-Version: 1.0 To: community@altlinux.ru Subject: Re: [Comm] C++ rulezz :)) References: Content-Type: text/plain; charset=KOI8-R; format=flowed Content-Transfer-Encoding: 8bit Sender: community-admin@altlinux.ru Errors-To: community-admin@altlinux.ru X-BeenThere: community@altlinux.ru X-Mailman-Version: 2.0.9 Precedence: bulk Reply-To: community@altlinux.ru List-Unsubscribe: , List-Id: List-Post: List-Help: List-Subscribe: , List-Archive: Archived-At: List-Archive: List-Post: 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 байт памяти, то начинаешь думать, как её распределить между кучей функций. особенно угнетают всякие инициализационные функции, в которых нужны переменные по какой-то причине. когда памяти не хватает, приходится вытаскивать их на глобальный уровень и это получается не программирование а черт знает что!