- Vote on answer
- posted
18 years ago
WINAVR
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
Про "факт" или "не факт", можно говорить когда есть конкретная задача. Вы же привели абстрактную задачу - есть N каналов, входные частоты f, меняются по какому-то закону f(t) их нужно обработать и выдать сигнал F и нужно все это сделать на некотором кристалле X - при том что N, f(t), F и X могут быть какие угодно. И утверждаете, что на ассемблере, эта задача решится, а на Си нет... С таким же успехом можно утверждать обратное:-) Хорошо хоть из соседних писем видно что линий у вас 4 или 8. По мне так нужно решать конкретные задачи, а не в целом и на все случаи жизни...
А почему вы утверждаете что "трюки" на асм-е - это изящный способ, а "трюки" на Си - нет? Что вы вообще в это понятие вкладываете - "трюки"?
Я вообще без предрассудков, надо - пишу вставку или модуль на асме, но если можно все сделать на чистом Си - оставляю на Си..... Но утверждать что это надо обязательно писать на Си, а это обязательно на асм-е не возьмусь никогда. Это все спор ради спора....
Если вы прекрасно владеете ассемблером, то никто вас не тянет переходить на Си. Но если вы не понимаете Си (что я заметил из соседних писем), то и пользоваться им и рассуждать о его "недостатках" вам не стоит.
Был у нас в конторе один товарищ, долго не задержался, т.к. начал решать задачу с изучения CPU и его асм-а, когда заготовка проекта писанного на Си уже работала и ему оставалось только дописать кусок работающий с внешней периферией. Начальство видит - время идет результата нет.... вывод - человек бездельничает (с точки зрения нач.) Так что такое упорство - типа "ЯП X рулез и ничего нет круче" (вместо X можно подставить асм, Си, Си++, Паскаль, VB, Ада
- по вкусу) не есть вещь полезная в реальной жизни.
Во еще могу привести контрпример для "дерганья ножками" (мой "любимый" IAR Си для MSP430) Можете объяснить где здесь "Есть проигрыш."? =============================================== 24 /******************************************************************* 25 Функция I2CBusSTART выполняет условие START на шине I2C. 26 *******************************************************************/ 27 void I2CBusSTART(void) \ 0000 I2CBusSTART: 28 {// Begin I2CBusSTART 29 30 // 1. Записать в SDA 1. \ 0000 E2D31900 BIS.B #2,&25 31 P3OUT |= (0x0002); 32 33 // 2. Подождать установки данных на SDA 34 // Ждем время Tsu_dat 35 DELAY(Tsu_dat); 36 37 // 3. Записать в SCL 1. \ 0004 F2D21900 BIS.B #8,&25 38 P3OUT |= (0x0008); 39 40 // 4. Подождать время установки условия START 41 // Ждем время Tsu_sta 42 DELAY(Tsu_sta); 43 44 // 5. Записать в SDA 0. 45 // Сбрасываем линию SDA в 0. \ 0008 E2C31900 BIC.B #2,&25 46 P3OUT &= ~(0x0002); 47 48 // 6. Подождать время удержания условия START. 49 // Ждем время Thd_sta. 50 DELAY(Thd_sta); 51 52 // 7. Записать в SCL 0. 53 // Сбрасываем линию SCL в 0. \ 000C F2C21900 BIC.B #8,&25 54 P3OUT &= ~(0x0008); 55 \ 0010 3041 RET 56 }// End I2CBusSTART =============================================== Небольшой комментарий: Макрос DELAY(t) - пустой. Поскольку все крутится от внутреннего генератора MSP430, то перед обменом по I2C я снижаю его частоту так чтобы программное "дерганье ногами" обошлось без дополнительных задержек. (зависит от характеристик микросхем-slave-ов).
Опять же все зависит от того насколько качественно реализована оптимизация в компиляторе. Кто например мешает вложить ваши любимые "трюки" в компилятор, что бы код получался не тупым разворачиванием конструкций, а применением соответствующих "изящных решений" в местах где это возможно.
Так что уместнее было бы говорить не "Есть проигрыш", а "Бывает проигрыш":-)
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
Hello, Dimmy Timchenko! You wrote in conference fido7.ru.embedded to Andrey Solomatov on Wed, 05 Oct 2005 15:42:06
+0400:DT>>> Угу. А в Аде можно описать свой арифметический тип, DT>>> полностью соответствующий, например, точности и диапазону DT>>> значений измеряемой величины. А компилятор выберет DT>>> представление, максимально эффективно реализующее этот тип DT>>> на данном железе.
AS>> В C++ тоже. AS>> Правда придётся делать всё "ручками",
DT> Здрасти. Ручками можно и на ассемблере. ;) Приятность именно DT> в том, что ты просто пишешь, например:
DT> type Temperature is delta 0.01 range -100..100;
А во что скомпилируется работа с таким типом? А если в одном выражении с другими такими же?
dima
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago
- Vote on answer
- posted
18 years ago