Разрабатываю новый сетевой протокол
Variable Length Advanced Data Sending Over Network
Что он будет делать и зачем нужен не знаю, разработал пока только название.
У меня пявилась идея ... Напишу-ка я СИ компилятор для ZX'а ... На АСМЕ ... Будет поддержвать только стандарт С99 ... Люблю в качестве инструмента АСМ !!! Единственное не хочется библиотеки переписывать ... Они в СИ такие ограниченные. Но придётся ...
---
Кстати, у тебя на аватарке герой - "SPOOKED", игра велеколепно написана, вообще вся ONE-FRAME, и главное на АСМЕ !!!
AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.
Разрабатываю новый сетевой протокол
Variable Length Advanced Data Sending Over Network
Что он будет делать и зачем нужен не знаю, разработал пока только название.
Господа, когда вы перестанете путать кислое и длинное.
Объясняю для тех, кто на бронепоезде:
СИ ничего не знает про
а) особенности распараллеливания
б) кеш
в) особенности работы с внешними устройствами
г) и т.д.
Иметь в виду все вышеперечисленное- дело конкретного компилятора. И крайне глупо ругаться на ЯЗЫК, используя неподходящий КОМПИЛЯТОР, не НАСТРАИВАЯ его подобающим образом.
Это всё последствие полимики ...
Давайте лучше разберём стандарты:
1) while (TRUE) { };
На сколько принципиально ругаться на отсутствие ";" после "}" ???
2) char s[32];
sprintf (s,"Ura dedu morozu /* ");
sprintf (s,"Aru na deda moroza */ ");
Практическ все компиляторы думали, что между "/*" и "*/" всё заремлено, только мотороловский компилятор такое компилирует. В стадарте С99 наисано что такого делать нельзя и подобный код считаеся ошибкой. Предлагаю считать ошибкой, что считается ошибкой !!! Натуральная лень создателей сделать всё по-людски !!!
3) switch (?) {
case 0x02: assish;
case 0x01: popish;
case 0x00: kukish;
case 0x03: kakish;
}
В данной ситуации если "?" будет равен "1", то исполнится "popish; kukish; kakish;". С99 снова гласит, что нужно заканчивать "break;", прикрывая задницу, что это типа так придумали. На сколько это принципиально ??? Есть ли примеры, когда это так необходимо ?
a. Я изучил эту ситуацию и увидел, что KEIL под ARM-7 вообще тупо сортирует и исполнение получается таким: "popish; assish; kakish;".
b. IAR под ARM-7, херит регистры и память из-за оптимизации в зависимости от того, что в нутри "кейса".
c. ST-RealView исполняет често один "кейс".
Если стандарт С99 гласит писать "break;", может нужно сделать это автоматом и не парить мозги программисту !!!
4) Самое главное "жлобские маленькие буквАчки" !!! Предлагаю сделать универсально любыми !!! Как хочешь, так и пиши !!! Если етсь весомый довод, маленьких букв, то жду предлений ?
AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.
нинасколько, после закрывающей скобки блочного оператора ";" не нужна (но и не запрещается -- это просто пустой оператор, в строчке ";;;;;;;;" тоже нет никакой ошибки)
GCC компилит спокойно. 1й раз слышу, что так нельзя )
принято, но не обязательно. BTW, ты что за книжку по с99 читаешь? сроду break не был обязаловкой AFAIK, и кейсы без брейков используются на каджом шагу, например при разборе условных выражений в стиле php:
switch(operator)
{
case OP_IF:
/*пхаем на стек новую условную секцию*/
case OP_ELSEIF:
/*разбираем и вычисляем выражение, синтаксис которого одинаков для if и elseif*/
break;
default: err_exit("случилась фигня");
}
ты про чувствительность сишных идентификаторов к регистру? это юзается, и жить IMHO не мешает сршенно. к примеру константы препроцессора и значения enum'ов принято писать заглавными, чтоб не пересеклись с какой случайной переменной (переменные принято писать строчными) -- а то они на глобальном уровне, всякое может быть.
Последний раз редактировалось boo_boo; 22.01.2008 в 15:58.
это не проблема стандарта, а проблема кривой реализации этого самого стандарта разработчиками некоторых компиляторов.
с этим я бы согласился если поменять 10% на 98% оговорюсь, это если разрабатывать под нормальные платформы типа десктопа, а не под маленькую тормозную железячку с минимумом памяти
Cи на спеке полезен для общей организации кода -- на нем хорошо писать этакий фреймворк, который вызывает ассемблерные процедуры (для такого, вобщем-то, хоть бейсик можно юзать) -- ресурсы не критичны, зато код легко структурировать. пример: z88dk+spritepack, на которых, насколько понимаю, писаны phantomasa и еще кое-чего из последнего (при всей неоптимальности пусть и ассемблерного spritepack, который построен по слишком обобщенной архитектуре, чтоб эффективно юзать ресурсы, игрулька вполне играбельная )
Последний раз редактировалось boo_boo; 22.01.2008 в 16:11.
Глупо. Стандарт разрешает их не ставить.
Ну может так им было проще. Тем не менее- нарушение.
В случае, если "break" не стоит, что говорит стандарт? По идее, должно выполняться дальше до ближайшего или до конца свитча.
1) совместимость
2) стандартизация (как задали, так и пиши, не надо вводить в заблуждение)
3) шире пространство для идентификаторов
Я у себя на рабте вижу обратное ... Вот поэтому меня и раздражают СИ стандарт один а код разношёрстый. А потом сидишь и правишь половину чего-то кода, что бы можно было откомпилировать.
Кстати это как бы слеующий принципиальый вопрос, как красиво подружить СИ с асмом ... Надо будет подумать ...
Ну на калькулятор МК-61 писать не будем ... Как сказал Vitamin, СИ не знает какова железяка ... И я не вижу разницы в медленной или быстрой железяки ... Нет ничего плохого если прекрасно оптемизированный код будет велеколепно работать на супер быстрой железяке типа нашего Speccy !!! Но прикол с "МК-61" мне понравился ...
AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)