реклама на сайте
подробности

 
 
> Стиль программирования на Си, описание функции
sKWO
сообщение Mar 31 2008, 10:23
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



Добрый день!
Столкнулся со следующей проблемой.
нашол код как сделать восемь таймеров написанный Alechin Jan.
Первое что кидается в глаза та это синтаксис мне непонятный.
Вот к примеру прототип функции остановки тай мера:
Код
void Stop_Timer(IN IDX timer);

ну и сама функция:
Код
/*--------------------------------------------------------------------------------------------*/
/* Процедура остановки таймера.                                                               */
/* Принимает:   номер таймера (0 - 7).                                                        */
/* Возвращает:  ничего не возвращает.                                                         */
/*--------------------------------------------------------------------------------------------*/
__monitor void Stop_Timer(IN IDX timer)
{
  Timer[timer].Timer_Ena = TIMER_DIS;
  return;
}

Непонятно что такое IDX? Ну IN понятно, направление, очень удобно.
IDX по ходу здесь беззнаковый чар.
Ну и соответственно вопрос:
Этот синтаксис возможен через какоето макроопределение?
Может кто знает, подскажите, уверен это интерессно не только мне.
Вот ещё пример
Код
void Start_Timer(IN IDX timer, IN WORD interval, IN pTIMER_FUNC pFunc = NULL, IN bool cycle = TIMER_ONCE);

Спасибо.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
SasaVitebsk
сообщение Apr 2 2008, 18:34
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Вот об этом я и говорю - богатство выбора в рамках языка.

При написании сложных операторов с большим количеством операций по типу ++/-- могут быть грабли. Они достаточно подробно описаны даже в учебниках. Но, как мне кажется, не стоит перегружать операторы. Это неудобно для отладки к примеру и ухудшает читаемость. С другой стороны, совершенно очевидно, что компилятору по барабану написали ли вы формулу одним оператором или тремя. Качество сгенерированного кода не ухудшится
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 2 2008, 19:30
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(SasaVitebsk @ Apr 2 2008, 21:34) *
... совершенно очевидно, что компилятору по барабану написали ли вы формулу одним оператором или тремя. Качество сгенерированного кода не ухудшится

Компиляторы умнеют, но тем не менее пока не умнее Вас и на подсказку вполне вероятно, ответят лучшим кодом.


Цитата(singlskv @ Apr 2 2008, 22:19) *
Более того, при написании 3мя операторами оно может и существенно улучшиться 07.gif
если знаешь как правильно разбить эти 3 оператора на нужное количество строк...

Вы знаете? Тогда пример в студию......

Цитата(_Pasha @ Apr 2 2008, 21:53) *
Поэтому, когда мне закинут в уши мысль типа...

smile.gif ну зачем-же гордится своей наивностью?


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 2 2008, 20:31
Сообщение #4


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Apr 2 2008, 23:30) *
Вы знаете? Тогда пример в студию......
Да пожалуйста, WinAvr20060421, на IAR тоже как-то проверял, чуть получше но тоже не блеск:
Код
#include <avr/io.h>

volatile unsigned char al=0xFF;
volatile unsigned char ah=0xFF;
volatile unsigned char Pb,Pc,Pd;

int main()
{
  unsigned char pb,pc,pd;

  unsigned char tmpl = al;
  unsigned char tmph = ah;

//------------ Вариант N1 ("правильный")
  pb = (tmph & 0b10000000) | ((tmph & 0b01110000) >> 1) | ((tmph & 0b00001100) >> 2);
  pc = ((tmph & 0b00000011) << 2) | ((tmpl & 0b11000000) >> 6);
  pd = tmpl <<2;
//----- сохраняем результат
  Pb = pb;
  Pc = pc;
  Pd = pd;


  tmpl = al;
  tmph = ah;

//------------ Вариант N2 ("неправильный :) ")
  pd = (tmpl << 2);
  pc = tmph & 0b01111100;
  pc >>= 1;
  pb = (tmph & 0b10000000);
  pb |= (pc & 0b00111000);
  pc &= 0b00000110;
  pc >>= 1;
  pb |= pc;
  pc = (tmph&0b00000011);
  pc <<= 2;
  pd = tmpl >> 6;
  pc |= pd;
  pd = tmpl << 2;
//----- сохраняем результат
  Pb = pb;
  Pc = pc;
  Pd = pd;

//---------------------------

  while (1);

}

результат компиляции:
Код
pb = (tmph & 0b10000000) | ((tmph & 0b01110000) >> 1) | ((tmph & 0b00001100) >> 2);
  6c:    24 2f           mov    r18, r20
  6e:    33 27           eor    r19, r19
  70:    c9 01           movw    r24, r18
  72:    80 77           andi    r24, 0x70; 112
  74:    90 70           andi    r25, 0x00; 0
  76:    95 95           asr    r25
  78:    87 95           ror    r24
  7a:    40 78           andi    r20, 0x80; 128
  7c:    48 2b           or    r20, r24
  7e:    c9 01           movw    r24, r18
  80:    8c 70           andi    r24, 0x0C; 12
  82:    90 70           andi    r25, 0x00; 0
  84:    95 95           asr    r25
  86:    87 95           ror    r24
  88:    95 95           asr    r25
  8a:    87 95           ror    r24
  8c:    48 2b           or    r20, r24
  pc = ((tmph & 0b00000011) << 2) | ((tmpl & 0b11000000) >> 6);
  8e:    23 70           andi    r18, 0x03; 3
  90:    30 70           andi    r19, 0x00; 0
  92:    22 0f           add    r18, r18
  94:    33 1f           adc    r19, r19
  96:    22 0f           add    r18, r18
  98:    33 1f           adc    r19, r19
  9a:    85 2f           mov    r24, r21
  9c:    99 27           eor    r25, r25
  9e:    36 e0           ldi    r19, 0x06; 6
  a0:    96 95           lsr    r25
  a2:    87 95           ror    r24
  a4:    3a 95           dec    r19
  a6:    e1 f7           brne    .-8      ; 0xa0 <main+0x44>
  a8:    28 2b           or    r18, r24
  pd = tmpl <<2;
  aa:    55 0f           add    r21, r21
  ac:    55 0f           add    r21, r21

Код
  pd = (tmpl << 2);
  pc = tmph & 0b01111100;
  c2:    24 2f           mov    r18, r20
  c4:    2c 77           andi    r18, 0x7C; 124
  pc >>= 1;
  c6:    26 95           lsr    r18
  pb = (tmph & 0b10000000);
  c8:    94 2f           mov    r25, r20
  ca:    90 78           andi    r25, 0x80; 128
  pb |= (pc & 0b00111000);
  cc:    82 2f           mov    r24, r18
  ce:    88 73           andi    r24, 0x38; 56
  d0:    98 2b           or    r25, r24
  pc &= 0b00000110;
  d2:    26 70           andi    r18, 0x06; 6
  pc >>= 1;
  d4:    26 95           lsr    r18
  pb |= pc;
  d6:    92 2b           or    r25, r18
  pc = (tmph&0b00000011);
  d8:    24 2f           mov    r18, r20
  da:    23 70           andi    r18, 0x03; 3
  pc <<= 2;
  dc:    22 0f           add    r18, r18
  de:    22 0f           add    r18, r18
  pd = tmpl >> 6;
  e0:    85 2f           mov    r24, r21
  e2:    82 95           swap    r24
  e4:    86 95           lsr    r24
  e6:    86 95           lsr    r24
  e8:    83 70           andi    r24, 0x03; 3
  pc |= pd;
  ea:    28 2b           or    r18, r24
  pd = tmpl << 2;
  ec:    55 0f           add    r21, r21
  ee:    55 0f           add    r21, r21


ИТОГО:
"Правильный" 21 слов 58 тактов
"Неправильный" 17 слов 23 такта

Выводы делаем сами 07.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 2 2008, 21:51
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Apr 2 2008, 23:31) *
Да пожалуйста, WinAvr20060421, на IAR тоже как-то проверял, чуть получше но тоже не блеск:

Ну и где обещанная экономия от
Цитата
...правильно разбить эти 3 оператора на нужное количество строк...

Налицо ДВА РАЗНЫХ АЛГОРИТМА, а не описание одного и того-же "разным количеством строк".
Кроме того, посмею предположить, что под нормально оптимизирующим компилятором разница будет в пару команд максимум.
Цитата
Выводы делаем сами

Сделал smile.gif



Цитата(AlexKLm @ Apr 3 2008, 00:22) *
Мне нравится стиль Microsoft, лучше трудно придумать.

Трудно придумать стиль в котором больше жертв принесено стилю ради собственно абсолютно формального стиля.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 2 2008, 21:55
Сообщение #6


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Apr 3 2008, 01:47) *
Налицо ДВА РАЗНЫХ АЛГОРИТМА,
с ОДИНАКОВЫМ результатом, и принципиально не различающимся методом вычислений,
+ если Вы не обратили внимание, во втором варианте операции на одну больше smile.gif
Цитата
Кроме того, посмею предположить, что под нормально оптимизирующим компилятором разница будет в пару команд максимум.
покажите результат компиляции...
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 2 2008, 22:08
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Apr 3 2008, 00:55) *
покажите результат компиляции...

А самому? Думаете поленюсь copy-paste и убрать отрыжки древних ассемблеров не имеющих препроцессоров? Ладно:
Код
//   19 void m1(void)
m1:
//   20 {
//   21 unsigned char pb,pc,pd;
//   22
//   23 unsigned char tmpl = al;
        LDI     R30, LOW(al)
        LDI     R31, (al) >> 8
        LD      R19, Z
//   24 unsigned char tmph = ah;
        LDD     R16, Z+1
//   25
//   26 //------------ Вариант N1 ("правильный")
//   27   pb = ( tmph & 0x80 )|( (tmph & 0x70) >> 1 )|( (tmph & 0xC0) >> 2 );
//   28   pc = ((tmph & 0x03) << 2 )|( (tmpl & 0xC0) >> 6 );
//   29   pd = tmpl <<2;
//   30
//   31 //----- сохраняем результат
//   32   Pb = pb;
        MOV     R18, R16
        ANDI    R18, 0x80
        MOV     R17, R16
        ANDI    R17, 0x70
        ASR     R17
        OR      R18, R17
        MOV     R17, R16
        ANDI    R17, 0xC0
        LSR     R17
        LSR     R17
        OR      R18, R17
        STD     Z+2, R18
//   33   Pc = pc;
        ANDI    R16, 0x03
        LSL     R16
        LSL     R16
        LDI     R17, 4
        MUL     R19, R17
        OR      R16, R1
        STD     Z+3, R16
//   34   Pd = pd;
        LSL     R19
        LSL     R19
        STD     Z+4, R19
//   35
//   36 }
        RET



//   38 void m2(void)
m2:
//   39 {
//   40
//   41 unsigned char pb,pc,pd;
//   42
//   43 unsigned char tmpl = al;
        LDI     R30, LOW(al)
        LDI     R31, (al) >> 8
        LD      R20, Z
//   44 unsigned char tmph = ah;
        LDD     R18, Z+1
//   45
//   46 //------------ Вариант N2 ("неправильный :) ")
//   47       pd = (tmpl << 2);
//   48
//   49     pc = tmph & 0x7C;
//   50       pc >>= 1;
        MOV     R17, R18
        ANDI    R17, 0x7C
        LSR     R17
//   51
//   52     pb = (tmph & 0x80);
//   53       pb |= (pc & 0x38);
//   54       pc &= 0x06;
//   55       pc >>= 1;
//   56       pb |= pc;
//   57       pc = tmph & 0x03;
//   58       pc <<= 2;
//   59       pd = tmpl >> 6;
//   60       pc |= pd;
//   61       pd = tmpl << 2;
//   62 //----- сохраняем результат
//   63   Pb = pb;
        MOV     R19, R18
        ANDI    R19, 0x80
        MOV     R16, R17
        ANDI    R16, 0x38
        OR      R19, R16
        ANDI    R17, 0x06
        LSR     R17
        OR      R19, R17
        STD     Z+2, R19
//   64   Pc = pc;
        ANDI    R18, 0x03
        LSL     R18
        LSL     R18
        LDI     R16, 4
        MUL     R20, R16
        OR      R18, R1
        STD     Z+3, R18
//   65   Pd = pd;
        LSL     R20
        LSL     R20
        STD     Z+4, R20
//   66 }
        RET

P.S.
Получилось, что все ухищрения яйца выеденного не стоят....


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
singlskv
сообщение Apr 2 2008, 22:37
Сообщение #8


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(zltigo @ Apr 3 2008, 02:08) *
и убрать отрыжки древних ассемблеров не имеющих препроцессоров?
это не отрыжки, это удобство для данной конкретной задачки,
по битикам видно что куда попадает, но это просто специфика...
Кстати Вы вот так и ошиблись при переводе из двоичного представления в 16x
вот так:
(tmph & 0b10000000)......(tmph & 0b01110000).......(tmph & 0b00001100 )
сразу же видно что взяли нужные битики,
а вот так нифига не видно:
( tmph & 0x80 )........(tmph & 0x70)..........(tmph & 0xC0 )

Цитата
А самому?
Код
........
Я же говорю, пробовал, раньше код был намного хуже.
Какая версия ?
С таким выходом - убедили!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Apr 3 2008, 05:53
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(singlskv @ Apr 3 2008, 01:37) *
это не отрыжки, это удобство для данной конкретной задачки,
по битикам видно что куда попадает, но это просто специфика...

Да ничего не видно, при "видно" не ошибся-бы,даже в 2 часа ночи...
А тут даже на 8bit глазоломка, а уж на 32 smile.gif
Цитата
сразу же видно что взяли нужные битики,

Более-менее видно когда такое написано,хоть на ASM, хоть на C, как минимум так:
Код
( tmph & BIT7 )........(tmph & (BIT6|BIT5|BIT4))..........

а вобще надо давать осмысленные имена
Код
( tmph & B_SIGN )........(tmph & M_LEVEL)..........

Цитата
Я же говорю, пробовал, раньше код был намного хуже.
Какая версия ?

IAR 5.10, но, полагаю, и на 4.x будет тот-же результат.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- sKWO   Стиль программирования на Си   Mar 31 2008, 10:23
- - Axxel   Цитата(sKWO @ Mar 31 2008, 16:23) Этот си...   Mar 31 2008, 10:36
|- - aaarrr   Стиль жуткий, не надо так делать. Цитата(Axxel ...   Mar 31 2008, 10:40
- - defunct   ЦитатаЭтот синтаксис возможен через какоето макроо...   Mar 31 2008, 10:59
|- - sKWO   Цитата(defunct @ Mar 31 2008, 14:59) да, ...   Mar 31 2008, 11:56
|- - dxp   Цитата(sKWO @ Mar 31 2008, 18:56) Да, тог...   Mar 31 2008, 12:16
|- - defunct   Цитата(sKWO @ Mar 31 2008, 13:56) Чёта му...   Mar 31 2008, 14:17
|- - Axxel   Цитата(sKWO @ Mar 31 2008, 17:56) ПОКАЖИ ...   Apr 1 2008, 04:30
- - sensor_ua   ЦитатаВо всех случаях, где можно выбирать, предпоч...   Mar 31 2008, 12:48
|- - rezident   Извиняюсь, что вклиниваюсь. Цитата(sensor_ua ...   Mar 31 2008, 14:13
|- - dxp   Цитата(sensor_ua @ Mar 31 2008, 19:48) Пр...   Apr 1 2008, 03:41
- - Alechin   Так как кусок кода мой - скажу как это описано у м...   Mar 31 2008, 14:08
- - sensor_ua   ЦитатаДля переносимости кода.... IMNHO, совсем неу...   Mar 31 2008, 14:39
|- - rezident   Цитата(sensor_ua @ Mar 31 2008, 20:39) IM...   Mar 31 2008, 14:51
- - vshemm   Есть замечательная книга Алена Голуба "Правил...   Mar 31 2008, 15:08
- - sensor_ua   ЦитатаУже были и неоднократно пояснения почему typ...   Mar 31 2008, 15:23
|- - sKWO   Спасибо, Ребята! Дисскусия разворачивается хор...   Mar 31 2008, 16:51
- - sensor_ua   Попробуй таки найти текстовым поиском "#defin...   Mar 31 2008, 17:10
|- - rezident   Цитата(sensor_ua @ Mar 31 2008, 23:10) По...   Mar 31 2008, 17:12
- - sensor_ua   ЦитатаА вот на такое безобразие препроцессор сруга...   Mar 31 2008, 17:26
|- - rezident   Цитата(sensor_ua @ Mar 31 2008, 23:26) А ...   Mar 31 2008, 18:49
- - sensor_ua   Гы Мне код перебивать не нужно. Мне как раз единож...   Mar 31 2008, 19:07
- - Lem   препроцессором не рекомендуется пользоваться именн...   Mar 31 2008, 20:08
|- - ReAl   Цитата(Lem @ Mar 31 2008, 22:08) как во ч...   Apr 1 2008, 12:40
|- - dxp   Цитата(ReAl @ Apr 1 2008, 19:40) Как прав...   Apr 1 2008, 13:50
|- - Сергей Борщ   Цитата(dxp @ Apr 1 2008, 16:50) Осталось ...   Apr 1 2008, 14:43
|- - ReAl   Цитата(dxp @ Apr 1 2008, 15:50) Это где т...   Apr 1 2008, 14:51
|- - zltigo   Цитата(dxp @ Apr 1 2008, 16:50) А вот в и...   Apr 1 2008, 20:44
|- - SasaVitebsk   Цитата(zltigo @ Apr 2 2008, 00:44) Рекоме...   Apr 1 2008, 22:17
||- - _Pasha   Цитата(SasaVitebsk @ Apr 2 2008, 01:17) П...   Apr 2 2008, 06:58
|- - ReAl   Цитата(zltigo @ Apr 1 2008, 22:44) Самост...   Apr 2 2008, 11:55
|- - defunct   Цитата(ReAl @ Apr 2 2008, 13:55) Шаманим...   Apr 2 2008, 12:15
||- - ReAl   Цитата(defunct @ Apr 2 2008, 14:15) Это я...   Apr 2 2008, 12:40
||- - defunct   Цитата(ReAl @ Apr 2 2008, 14:40) Фух, а т...   Apr 2 2008, 12:43
||- - _Pasha   Цитата(ReAl @ Apr 2 2008, 15:40) ...спосо...   Apr 2 2008, 18:53
|- - zltigo   Цитата(ReAl @ Apr 2 2008, 14:55) По повод...   Apr 2 2008, 15:01
|- - sKWO   Позволю небольшой отрывок кода, извиняюсь что немн...   Apr 2 2008, 16:40
- - sensor_ua   Цитатапрепроцессором не рекомендуется пользоваться...   Mar 31 2008, 20:29
- - _Pasha   Цитата(vshemm @ Mar 31 2008, 19:08) Так т...   Mar 31 2008, 22:07
- - sensor_ua   ЦитатаУже неоднократно на эту тему проходились, по...   Apr 1 2008, 05:53
|- - Dog Pawlowa   Цитата(sensor_ua @ Apr 1 2008, 08:53) Про...   Apr 1 2008, 06:30
|- - dxp   Цитата(sensor_ua @ Apr 1 2008, 12:53) А в...   Apr 1 2008, 07:01
- - _Pasha   Пример winavr Кодeeprom_read_block(&my_var...   Apr 1 2008, 06:16
- - _Pasha   Цитата(sensor_ua @ Apr 1 2008, 09:53) К с...   Apr 1 2008, 06:33
- - sensor_ua   ЦитатаНо это, повторяю, другое Дальше бессмысленно...   Apr 1 2008, 08:17
|- - dxp   Цитата(sensor_ua @ Apr 1 2008, 15:17) Дал...   Apr 1 2008, 09:28
- - SasaVitebsk   Очень интересная дискуссия развернулась. Но, в общ...   Apr 1 2008, 12:48
|- - dxp   Цитата(SasaVitebsk @ Apr 1 2008, 19:48) Н...   Apr 1 2008, 13:11
||- - ReAl   Цитата(dxp @ Apr 1 2008, 15:11) Во всяком...   Apr 1 2008, 13:40
||- - defunct   Цитата(ReAl @ Apr 1 2008, 15:40) Но ведь ...   Apr 2 2008, 09:58
||- - andrew_b   Цитата(defunct @ Apr 2 2008, 12:58) Delph...   Apr 2 2008, 10:15
||- - Сергей Борщ   Цитата(defunct @ Apr 2 2008, 12:58) Прост...   Apr 2 2008, 12:34
||- - defunct   Цитата(Сергей Борщ @ Apr 2 2008, 14:34) Н...   Apr 2 2008, 12:39
|- - Сергей Борщ   Цитата(SasaVitebsk @ Apr 1 2008, 15:48) К...   Apr 1 2008, 13:15
- - Lem   одним из авторитетов для меня является Герб Саттер...   Apr 1 2008, 13:07
- - sensor_ua   ЦитатаНе следует путать приятное с полезным... Не ...   Apr 1 2008, 13:37
|- - singlskv   Цитата(SasaVitebsk @ Apr 2 2008, 22:34) С...   Apr 2 2008, 19:19
|||- - ReAl   Цитата(singlskv @ Apr 3 2008, 00:37) Я же...   Apr 2 2008, 22:46
||||- - singlskv   Цитата(ReAl @ Apr 3 2008, 02:32) Кстати, ...   Apr 2 2008, 23:25
||||- - ReAl   Цитата(singlskv @ Apr 3 2008, 00:55) Так ...   Apr 2 2008, 23:45
||||- - defunct   Цитата(ReAl @ Apr 3 2008, 01:45) Кстати, ...   Apr 3 2008, 10:22
||- - ReAl   Цитата(singlskv @ Apr 2 2008, 23:55) с ОД...   Apr 2 2008, 22:32
|- - sKWO   Цитата(zltigo @ Apr 2 2008, 22:30) Компил...   Apr 7 2008, 10:40
|- - ReAl   Цитата(sKWO @ Apr 7 2008, 13:40) К пример...   Apr 7 2008, 19:43
|- - sKWO   Цитата(ReAl @ Apr 7 2008, 22:43) Называет...   Apr 8 2008, 11:00
- - SasaVitebsk   Хотя я в NASA не работал, но по слухам там не прим...   Apr 2 2008, 19:53
- - AlexKLm   На СИ, правильно когда по-больше зелени (#define),...   Apr 2 2008, 21:22
- - SasaVitebsk   Вот я и говорю, что результат практически тот же п...   Apr 3 2008, 07:23
|- - ReAl   Цитата(SasaVitebsk @ Apr 3 2008, 09:23) В...   Apr 3 2008, 08:28
- - _Pasha   Кто о чем, а вшивый - о бане... Пробегала книжка ...   Apr 3 2008, 12:57
- - sensor_ua   Цитатасредствами ИАР это дело обстоит намного прощ...   Apr 7 2008, 10:58
|- - sKWO   Цитата(sensor_ua @ Apr 7 2008, 13:58) А к...   Apr 7 2008, 11:07
- - sensor_ua   Не очень понял, что Вы хотите, но на телесистемах ...   Apr 7 2008, 12:51
- - sKWO   спасибо за инфу!!   Apr 7 2008, 17:49


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 23:56
Рейтинг@Mail.ru


Страница сгенерированна за 0.01596 секунд с 7
ELECTRONIX ©2004-2016