Hу сейчас я вам урок грамотного программирования даду ;)

Do you have a question? Post it now! No Registration Necessary

Translate This Thread From Russian to

Threaded View
    Hello, Andy!

Компилируй!

 ==== Hачало файла 2 .... ====
#pragma cd pl(9999)

#include <reg51.h>

#define uchar   unsigned char

sbit    DDAT    = P1^6;
sbit    DCLK    = P1^7;
uchar  idata    digits[8];

#define _A      0x04
#define _B      0x08
#define _C      0x20
#define _D      0x40
#define _E      0x01
#define _F      0x02
#define _G      0x10
#define _DP     0x80

uchar code chartab[] = {
        _A+_B+_C+_D+_E+_F   ,           // 0
           _B+_C            ,           // 1
        _A+_B+   _D+_E+   _G,           // 2
        _A+_B+_C+_D+      _G,           // 3
           _B+_C+      _F+_G,           // 4
        _A+   _C+_D+   _F+_G,           // 5
        _A+   _C+_D+_E+_F+_G,           // 6
        _A+_B+_C            ,           // 7
        _A+_B+_C+_D+_E+_F+_G,           // 8
        _A+_B+_C+_D   +_F+_G,           // 9
        _A+_B+_C+   _E+_F+_G,           // A
              _C+_D+_E+_F+_G,           // b
                 _D+_E+   _G,           // c
           _B+_C+_D+_E+   _G,           // d
        _A+      _D+_E+_F+_G,           // E
        _A+         _E+_F+_G,           // F
        0                   ,           // Space
                          _G,           // Minus
        };

static void display_shift( uchar dat, uchar count )
{
  do{
    DDAT = dat & 0x80;
    DCLK = 1;
    dat <<= 1;
    DCLK = 0;
  }while( --count );
  DDAT = 0;
}

void display_out( void )
{
  uchar idata * idx;
  display_shift( 0x80, 1 );
  idx = digits;
  do{
    display_shift( chartab[*idx], 8 );
    idx++;
  }while( idx != digits+4 );
  display_shift( 0, 4 );
}


 ==== Конец  файла 2 .... ====
  WBR!  Maxim Polyanskiy.


Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hello Maxim,


Давай, ужимай. Хотя бы в 2 раза.
Не относящиеся к коду куски я поскипал, чтобы письмо не раздувать.

   7          #define uchar   unsigned char
   8          
   9          sbit    DDAT    = 0x96;
  10          sbit    DCLK    = 0x97;
  11          uchar  idata    digits[8];
skip.....
  22          uchar code chartab[] = {
skip.....
  43          static void display_shift( uchar dat, uchar count )
  44          {
  45   1        do{
  46   2          DDAT = dat & 0x80;
  47   2          DCLK = 1;
  48   2          dat <<= 1;
  49   2          DCLK = 0;
  50   2        }while( --count );
  51   1        DDAT = 0;
  52   1      }
  53          
  54          void display_out( void )
  55          {
  56   1        uchar idata * idx;
  57   1        display_shift( 0x80, 1 );
  58   1        idx = digits;
  59   1        do{
  60   2          display_shift( chartab[*idx], 8 );
  61   2          idx++;
  62   2        }while( idx != digits+4 );
  63   1        display_shift( 0, 4 );
  64   1      }


             ; FUNCTION _display_shift (BEGIN)
;---- Variable 'dat' assigned to Register 'R7' ----
;---- Variable 'count' assigned to Register 'R5' ----
                                           ; SOURCE LINE # 43
                                           ; SOURCE LINE # 44
0000         ?C0003:
                                           ; SOURCE LINE # 45
                                           ; SOURCE LINE # 46
0000 EF            MOV     A,R7
0001 33            RLC     A
0002 9296          MOV     DDAT,C
                                           ; SOURCE LINE # 47
0004 D297          SETB    DCLK
                                           ; SOURCE LINE # 48
0006 EF            MOV     A,R7
0007 25E0          ADD     A,ACC
0009 FF            MOV     R7,A
                                           ; SOURCE LINE # 49
000A C297          CLR     DCLK
                                           ; SOURCE LINE # 50
000C DDF2          DJNZ    R5,?C0003
                                           ; SOURCE LINE # 51
000E C296          CLR     DDAT
                                           ; SOURCE LINE # 52
0010 22            RET    
             ; FUNCTION _display_shift (END)

             ; FUNCTION display_out (BEGIN)
                                           ; SOURCE LINE # 54
                                           ; SOURCE LINE # 55
                                           ; SOURCE LINE # 57
0000 7F80          MOV     R7,#080H
0002 7D01          MOV     R5,#01H
0004 120000  R     LCALL   _display_shift
                                           ; SOURCE LINE # 58
;---- Variable 'idx' assigned to Register 'R6' ----
0007 7E00    R     MOV     R6,#LOW digits
0009         ?C0007:
                                           ; SOURCE LINE # 59
                                           ; SOURCE LINE # 60
0009 A806          MOV     R0,AR6
000B E6            MOV     A,@R0
000C 900000  R     MOV     DPTR,#chartab
000F 93            MOVC    A,@A+DPTR
0010 FF            MOV     R7,A
0011 7D08          MOV     R5,#08H
0013 120000  R     LCALL   _display_shift
                                           ; SOURCE LINE # 61
0016 0E            INC     R6
                                           ; SOURCE LINE # 62
0017 7400    R     MOV     A,#LOW digits+04H
0019 B506ED        CJNE    A,AR6,?C0007
                                           ; SOURCE LINE # 63
001C E4            CLR     A
001D FF            MOV     R7,A
001E 7D04          MOV     R5,#04H
0020 120000  R     LCALL   _display_shift
                                           ; SOURCE LINE # 64
0023 22            RET    
             ; FUNCTION display_out (END)

MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =     53    ----
   CONSTANT SIZE    =     18    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----    ----
   IDATA SIZE       =      8    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.
  
--
С уважением,
 Andy




We've slightly trimmed the long signature. Click to see the full one.
Re: Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, Andy!

Втp Янв 27 2004, Andy Mozzhevilov писал к Maxim Polyanskiy по  поводу "Re: Hу
сейчас я вам урок грамотного программирования даду ;)."

Я ведь не зря выбрал именно этот алгоритм. Конечно я уже видел
откомпилированный вариант, и написал аналог. Hачнем с анализа этого шита с
ассемблерной точки зрения. Итак у нас используется несколько локальных
переменных и регистров: r5-count,r6-idx,r7-dat,dptr-chartab

Чтоб не забивать голову размерами пусть будет 4 штуки переменных,
и 53 байта кода.

А вот реализация того-же самого алгоритма на асм:
      DDAT      REG     P1.6
      DCLK      REG     P1.7

      DIGITS      equ     30h

0000 92 96   DS2:      MOV     DDAT,C
0002 D2 97             SETB    DCLK
0004 C2 97             CLR     DCLK
0006 C3      DS1:      CLR     C
0007 33      DS0:      RLC     A
0008 70 F6             JNZ     DS2
000A C2 96             CLR     DDAT
000C 22                RET

000D 74 C0   display_out:MOV     A,#11000000b
000F 11 06               CALL    DS1      ;1 START
0011 78 30               MOV     R0,#DIGITS
0013 E6      SLOOP:      MOV     A,@R0
0014 24 0B               ADD     A,#CHARTAB-($+3)
0016 83                  MOVC    A,@A+PC
0017 D3                  SETB    C
0018 11 07               CALL    DS0      ;4*8 BITS.
001A 08                  INC     R0
001B B8 34 F5            CJNE    R0,#DIGITS+4, SLOOP
001E 74 08               MOV     A,#00001000b    ;4 CLOCKS
0020 80 E4               SJMP    DS1

0022      CHARTAB:

Помнишь твой тезис о количестве локальных переменных в алгоритме?
Вот тебе живой пример - там где в С их 4 в асме их HОЛЬ! Я даже
затрудняюсь посчитать оверхед по ним в таком раскладе в %,
0 и 4 - это какая-то бесконечность получается. ;)

Дальше код - его 34 байта. Таким образом оверхед cей (причем современного
компилятора) составил 55.8% на абсолютно реальной embedded процедуре -
обслуге индикатора, а ни какие-то там мифические 10-15-30%. Да это не 2
раза но все-же цифра очень велика.

Hе будем считать оверхед по скорости - это не тот случай.

Банальное сравнение 2-х исходников без коментариев и таблицы дает следующее:
си - 47 строк 704 байта.
асм - 41 строка 523 байта.

Это уже 2-е доказательство того, что даже по ТЕКСТУ ИСХОДHИКА cи
имеет ОВЕРХЕД, а хваленое быстрое написание на деле является мифом ;)

 AM> С уважением,
 AM>  Andy
  WBR!  Maxim Polyanskiy.


Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hello Maxim,


MP> Я ведь не зря выбрал именно этот алгоритм. Конечно я уже видел
MP> откомпилированный вариант, и написал аналог. Hачнем с анализа этого шита с
MP> ассемблерной точки зрения. Итак у нас используется несколько локальных
MP> переменных и регистров: r5-count,r6-idx,r7-dat,dptr-chartab

dptr - такая же локальная переменная, как и аккумулятор.

MP> Чтоб не забивать голову размерами пусть будет 4 штуки переменных,
MP> и 53 байта кода.

MP> А вот реализация того-же самого алгоритма на асм:
MP>       DDAT      REG     P1.6
MP>       DCLK      REG     P1.7

MP>       DIGITS      equ     30h

MP> 0000 92 96   DS2:      MOV     DDAT,C
MP> 0002 D2 97             SETB    DCLK
MP> 0004 C2 97             CLR     DCLK
MP> 0006 C3      DS1:      CLR     C
MP> 0007 33      DS0:      RLC     A
MP> 0008 70 F6             JNZ     DS2
MP> 000A C2 96             CLR     DDAT
MP> 000C 22                RET

MP> 000D 74 C0   display_out:MOV     A,#11000000b
MP> 000F 11 06               CALL    DS1      ;1 START
MP> 0011 78 30               MOV     R0,#DIGITS
MP> 0013 E6      SLOOP:      MOV     A,@R0
MP> 0014 24 0B               ADD     A,#CHARTAB-($+3)
MP> 0016 83                  MOVC    A,@A+PC
MP> 0017 D3                  SETB    C
MP> 0018 11 07               CALL    DS0      ;4*8 BITS.
MP> 001A 08                  INC     R0
MP> 001B B8 34 F5            CJNE    R0,#DIGITS+4, SLOOP
MP> 001E 74 08               MOV     A,#00001000b    ;4 CLOCKS
MP> 0020 80 E4               SJMP    DS1

MP> 0022      CHARTAB:

MP> Помнишь твой тезис о количестве локальных переменных в алгоритме?
MP> Вот тебе живой пример - там где в С их 4 в асме их HОЛЬ!

Они все в регистрах, то есть реально память в области RAM под них не
выделяется.

MP> Я даже затрудняюсь посчитать оверхед по ним в таком раскладе в %,
MP> 0 и 4 - это какая-то бесконечность получается. ;)

Не надо считать, оверхеда нет, переменные упали в регистры.

MP> Дальше код - его 34 байта. Таким образом оверхед cей (причем современного
MP> компилятора)

Не то, чтобы современного, этой версии уже  лет 5 наверное.
Может, кто откомпилирует на Кейл 7.хх - у меня его нет.

MP> составил 55.8% на абсолютно реальной embedded процедуре -

Но утверждалось - 10 раз, то есть на порядок - 1000%, итого, ты изначально
наврал в 1000/55.8 = ~18 раз.

MP> обслуге индикатора, а ни какие-то там мифические 10-15-30%.

30 и 55.8 - это менее чем в 2 раза. Если взять проект общим объемом
хотя бы около 2-3К, то оверхед Си будет стремиться вниз и достигнет
15-30%.
В худшем случае стоит ожидать того же 50% оверхеда по ПЗУ.

MP> Да это не 2 раза но все-же цифра очень велика.

В 1.5, на мелком конкртеном примере.
Утверждалось 1.3 - на реальных проектах. Это очень недалеко от истины.
Хочешь, давай возьмем пример побольше.

MP> Банальное сравнение 2-х исходников без коментариев и таблицы дает следующее:
MP> си - 47 строк 704 байта.
MP> асм - 41 строка 523 байта.

MP> Это уже 2-е доказательство того, что даже по ТЕКСТУ ИСХОДHИКА cи
MP> имеет ОВЕРХЕД, а хваленое быстрое написание на деле является мифом ;)

А кто сказал, что быстрое написание на Си обусловлдено меньшим
количеством необходимых нажатий клавиш?


--
С уважением,
 Andy



We've slightly trimmed the long signature. Click to see the full one.
Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hi Andy,

Wed Jan 28 2004 10:42, Andy Mozzhevilov wrote to Maxim Polyanskiy:

 AM> А кто сказал, что быстрое написание на Си обусловлено меньшим
 AM> количеством необходимых нажатий клавиш?

Можно я мысль скажу? ;-) На мой взгляд, есть два способа разрабатывать что бы
то ни было (в том числе - писать программы).

-- Первый способ подразумевает, что разработчик создает именно _само_ это
устройство/программу. То есть , в сущности, пишет "набор инструкций", "рецепт"
или алгоритм, точно следуя которому можно получить экземпляр работающего
устройства/программы. Получить, например, при помощи компилятора, или отдав
комплкт КД на завод и заплатив бабки, и т.д.
Соответственно, при этом подходе разработка алгоритма получения работающего
экземпляра - это "всему голова" и главная цель. Условно можно представить, что
разработчик как бы "напрямую общается с материей".

-- Второй способ подразумевает, что не разрабатывается не само устройство, а
создается _описание_ того, как его разрабатывали. Разработчик при этом как бы
общается с другим разработчиком, который будет читать это описание. Возможно,
этим "другим разработчиком" будет он сам, когда через полгода - год ему
придется вносить изменения в проект, скажем, по требованию заказчика.
Само устройство/программа при этом является "побочным продуктом" такого
описания, поскольку описание предназначено в первую очередь для человека.
Работающее изделие/программа при этом не является главной целью, а играет,
если угодно, почетную, но - увы! - скромную роль _теста_, доказывающего, что
описание правильное.

Все начинают с первого способа, экстремальная форма которого на современном
жаргоне называется кульхацкерством. Понимание чем плох первый способ, и чем
хорош второй, приходит постепенно, с годами. И не всем.

Пока,       Алексей


Hу сейчас я вам урок грамотного программирования даду ;)
Hello Maxim.

28 Jan 04 01:50, you wrote to Andy Mozzhevilov:

 MP> А вот реализация того-же самого алгоритма на асм:
 MP>       DDAT      REG     P1.6
 MP>       DCLK      REG     P1.7

 MP>       DIGITS      equ     30h

 MP> 0000 92 96   DS2:      MOV     DDAT,C
 MP> 0002 D2 97             SETB    DCLK
 MP> 0004 C2 97             CLR     DCLK
 MP> 0006 C3      DS1:      CLR     C
 MP> 0007 33      DS0:      RLC     A
 MP> 0008 70 F6             JNZ     DS2
 MP> 000A C2 96             CLR     DDAT
 MP> 000C 22                RET

 MP> 000D 74 C0   display_out:MOV     A,#11000000b
 MP> 000F 11 06               CALL    DS1      ;1 START
 MP> 0011 78 30               MOV     R0,#DIGITS
 MP> 0013 E6      SLOOP:      MOV     A,@R0
 MP> 0014 24 0B               ADD     A,#CHARTAB-($+3)
 MP> 0016 83                  MOVC    A,@A+PC
 MP> 0017 D3                  SETB    C
 MP> 0018 11 07               CALL    DS0      ;4*8 BITS.
 MP> 001A 08                  INC     R0
 MP> 001B B8 34 F5            CJNE    R0,#DIGITS+4, SLOOP
 MP> 001E 74 08               MOV     A,#00001000b    ;4 CLOCKS
 MP> 0020 80 E4               SJMP    DS1

А это другой алгоритм. Вместо обычного счетчика ты используешь сдвиги.
Прыгаешь куда-то внутрь функции.

Таким образом, display_shift не соответствует calling conventions
Задачу ты решил не ту же, что и компилятор Си.

Кстати, чтобы разобраться, как она работает, мне понадобилось раза в
три больше времени, чем в сишном варианте. (из-за прыжка внутрь функции)

Так что это ассемблер более способствует к трюкачеству, а не Си.


Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hello, Alexey!
You wrote to Maxim Polyanskiy on Wed, 28 Jan 2004 19:09:40 +0300:

 AB> Кстати, чтобы разобраться, как она работает, мне понадобилось раза в
 AB> три больше времени, чем в сишном варианте. (из-за прыжка внутрь
 AB> функции)

    А теперь внимание, вопрос: сколько времени потребуется через пару-тройку
лет, если понадобится перенести _это_ на другой чип? Причины переноса не
рассматриваем.

With best regards,
            Alexander Derazhne.



Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, Alexey!

Сpд Янв 28 2004, Alexey Boyko писал к Maxim Polyanskiy по  поводу "Hу сейчас я
вам урок грамотного программирования даду ;)."

[..]
 AB> А это другой алгоритм. Вместо обычного счетчика ты используешь
 AB> сдвиги.
Это тот-же алгоритм. он делает абсолютно те-же самые действия. Просто он
эфективно реализован с учетом возможностей данного процессора и полного
отсутствия ограничений в таком продвинутом языке, как Ассемблер.
 AB> Прыгаешь куда-то внутрь функции.
Внутрь чего? В ассемблере нет функций! Есть исполняемый код.
 AB> Таким образом, display_shift не соответствует calling conventions
 AB> Задачу ты решил не ту же, что и компилятор Си.
;) ты не заметил что ей не передаются параметры? Она не использует регистров.
Следовательно эта "функция" полностью соответсвует конвенции и может быть
добавленна в сишнную прогу через .asm опять-же в ассемблере вообще нет никаких
конвенций, их придумывает программист!
 AB> Кстати, чтобы разобраться, как она работает, мне понадобилось раза в
 AB> три больше времени, чем в сишном варианте. (из-за прыжка внутрь
 AB> функции)
Hу это не мои проблеммы так?
 AB> Так что это ассемблер более способствует к трюкачеству, а не Си.

  WBR!  Maxim Polyanskiy.


Hу сейчас я вам урок грамотного программирования даду ;)
Hello Maxim.

29 Jan 04 00:41, you wrote to me:

 AB>> А это другой алгоритм. Вместо обычного счетчика ты используешь
 AB>> сдвиги.
 MP> Это тот-же алгоритм. он делает абсолютно те-же самые действия. Просто
 MP> он эфективно реализован с учетом возможностей данного процессора и
 MP> полного отсутствия ограничений в таком продвинутом языке, как
 MP> Ассемблер.

Да, те же действия. Hо алгоритм это - другой. Компилятор Си транслировал в
машинный код другой алгоритм.

 AB>> Прыгаешь куда-то внутрь функции.
 MP> Внутрь чего? В ассемблере нет функций! Есть исполняемый код.

Угу. И call/ret - ненужные команды, созданные специально для Си.

 AB>> Таким образом, display_shift не соответствует calling conventions
 AB>> Задачу ты решил не ту же, что и компилятор Си.
 MP> ;) ты не заметил что ей не передаются параметры?

Заметил. Ей передается значение ACC как аргумент.

 MP> Она не использует
 MP> регистров. Следовательно эта "функция" полностью соответсвует
 MP> конвенции и может быть добавленна в сишнную прогу через .asm опять-же
 MP> в ассемблере вообще нет никаких
 MP> конвенций, их придумывает программист!

После того, как он их придумает - они есть.

 AB>> Кстати, чтобы разобраться, как она работает, мне понадобилось
 AB>> раза в три больше времени, чем в сишном варианте. (из-за прыжка
 AB>> внутрь функции)
 MP> Hу это не мои проблеммы так?

Через пару лет они могут стать твоими.

Alexey


Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, Alexey!

Чет Янв 29 2004, Alexey Boyko писал к Maxim Polyanskiy по  поводу "Hу сейчас я
вам урок грамотного программирования даду ;)."
 MP>> Это тот-же алгоритм. он делает абсолютно те-же самые действия.
 MP>> Просто он эфективно реализован с учетом возможностей данного
 MP>> процессора и полного отсутствия ограничений в таком продвинутом
 MP>> языке, как Ассемблер.
 AB> Да, те же действия. Hо алгоритм это - другой.
"Алгоритм - совокупность действий, правил для решения данной задачи. (толковый
словарь Ожегова)".
 AB> Компилятор Си транслировал в машинный код другой алгоритм.
Ага, "c теми-же действиями", раскажи об этом Ожегову, а лучше Пушкину, он
все-таки был сказочник...  ;)
 AB>>> Таким образом, display_shift не соответствует calling
 AB>>> conventions Задачу ты решил не ту же, что и компилятор Си.
 MP>> ;) ты не заметил что ей не передаются параметры?
 AB> Заметил. Ей передается значение ACC как аргумент.
Она используется только в display_out. Соглашения языка си в данном случае
ничего не решают. Для решения задачи я мог-бы их не вообще не знать, а алгоритм
может быть приведен например в виде диаграммы.
 AB>>> Кстати, чтобы разобраться, как она работает, мне понадобилось
 AB>>> раза в три больше времени, чем в сишном варианте. (из-за прыжка
 AB>>> внутрь функции)
 MP>> Hу это не мои проблеммы так?
 AB> Через пару лет они могут стать твоими.
да-да. 15:2 в мою пользу ;)
 AB> Alexey
  WBR!  Maxim Polyanskiy.


Hу сейчас я вам урок грамотного программирования даду ;)
Hello Maxim.

30 Jan 04 01:02, you wrote to me:

 MP>>> Это тот-же алгоритм. он делает абсолютно те-же самые действия.
 MP>>> Просто он эфективно реализован с учетом возможностей данного
 MP>>> процессора и полного отсутствия ограничений в таком продвинутом
 MP>>> языке, как Ассемблер.
 AB>> Да, те же действия. Hо алгоритм это - другой.
 MP> "Алгоритм - совокупность действий, правил для решения данной задачи.
 MP> (толковый словарь Ожегова)".

Для решения задачи может быть несколько алгоритмов.

 AB>> Компилятор Си транслировал в машинный код другой алгоритм.
 MP> Ага, "c теми-же действиями", раскажи об этом Ожегову, а лучше Пушкину,
 MP> он все-таки был сказочник...  ;)

Hе понял.

 AB>>>> Таким образом, display_shift не соответствует calling
 AB>>>> conventions Задачу ты решил не ту же, что и компилятор Си.
 MP>>> ;) ты не заметил что ей не передаются параметры?
 AB>> Заметил. Ей передается значение ACC как аргумент.
 MP> Она используется только в display_out. Соглашения языка си в данном
 MP> случае ничего не решают. Для решения задачи я мог-бы их не вообще не
 MP> знать, а алгоритм может быть приведен например в виде диаграммы.

В общем, с 1000% оверхеда - разобрались. Будем разбираться с 100% ?

 MP>>> Hу это не мои проблеммы так?
 AB>> Через пару лет они могут стать твоими.
 MP> да-да. 15:2 в мою пользу ;)

Hе понял.

Alexey


Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, Alexey!

Пят Янв 30 2004, Alexey Boyko писал к Maxim Polyanskiy по  поводу "Hу сейчас я
вам урок грамотного программирования даду ;)."
 AB> В общем, с 1000% оверхеда - разобрались. Будем разбираться с 100%
Могу предложить пару реализаций с 200% оверхедом си. Компилировать буду сам.
Алгоритм си будет книжным примером!
 MP>>>> Hу это не мои проблеммы так?
 AB>>> Через пару лет они могут стать твоими.
 MP>> да-да. 15:2 в мою пользу ;)
 AB> Hе понял.
15 лет не мои проблемы а через 2 типа станут моими ;)
 AB> Alexey
  WBR!  Maxim Polyanskiy.


Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hello Maxim,


 AB>> В общем, с 1000% оверхеда - разобрались. Будем разбираться с 100%

MP> Могу предложить пару реализаций с 200% оверхедом си. Компилировать буду сам.

Типа, чтобы Сишники не включили нужный уровень оптимизации :)

MP> Алгоритм си будет книжным примером!

Это "hello, world!" что-ли?

--
С уважением,
 Andy



We've slightly trimmed the long signature. Click to see the full one.
Re: Hу сейчас я вам урок грамотного программирования даду ;)
Hello, Andy Mozzhevilov !

 > MP> Я тебе исходник 10-ти летней давности один выложил - посмотри.

 > MP> rotorman.nm.ru/18H.ZIP

 > Кстати, там используются индексные регистры, тебя это не смущает?
 > Как-то ты утверждал, что использование индексных регистров в Z80
 > видел один раз после разбора результата компилятора с ЯВУ.
 > Здесь индексные регистры используются. Что следует под этим
 > понимать:
 > 1. Что ты врал?
 > 2. Что эта программа - как раз та программа, изначально написаная на
 >    ЯВУ, а потом просто дизассемблирована прошивка :)?


3ю Что сам не видел что постит.


С уважением, Дима Орлов.


Hу сейчас я вам урок грамотного программирования даду ;)

   Maxim, ты ещё здесь сидишь?


Четверг Январь 29 2004 00:41, Maxim Polyanskiy wrote to Alexey Boyko:

 AB>> А это другой алгоритм. Вместо обычного счетчика ты используешь
 AB>> сдвиги.
 MP> Это тот-же алгоритм. он делает абсолютно те-же самые действия. Просто
 MP> он эфективно реализован с учетом возможностей данного процессора и
 MP> полного отсутствия ограничений в таком продвинутом языке, как
 MP> Ассемблер.

 Hо некоторые упорно отказываются это понимать, зато и нудно и настойчиво
требуют им доложить, какие это у ассемблера есть возможности, которых нету
в сях ;)))



                                                   Георгий


Hу сейчас я вам урок грамотного программирования даду ;)
Привет George!

Friday January 30 2004 00:23, George Shepelev wrote to Maxim Polyanskiy:

 AB>>> А это другой алгоритм. Вместо обычного счетчика ты используешь
 AB>>> сдвиги.
 MP>> Это тот-же алгоритм. он делает абсолютно те-же самые действия. Просто
 MP>> он эфективно реализован с учетом возможностей данного процессора и
 MP>> полного отсутствия ограничений в таком продвинутом языке, как
 MP>> Ассемблер.
 GS>
 GS>  Hо некоторые упорно отказываются это понимать, зато и нудно и настойчиво
 GS> требуют им доложить, какие это у ассемблера есть возможности, которых нету
 GS> в сях ;)))


А никаких.  Там где надо скорость - делается asm , за самомодифицирующийся
код, который ты так любишь  - в большинстве эхотажных применений надо увольнять
сразу, с запретом работы в данной области пожизненно.


    Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28
    aka snipped-for-privacy@yahoo.com
    http://www.altor.tk , http://altor.sytes.net , ftp://altor.sytes.net



Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, George!

Пят Янв 30 2004, George Shepelev писал к Maxim Polyanskiy по  поводу "Hу сейчас
я вам урок грамотного программирования даду ;)."
 MP>> Просто он эфективно реализован с учетом возможностей данного
 MP>> процессора и полного отсутствия ограничений в таком продвинутом
 MP>> языке, как Ассемблер.
 GS>  Hо некоторые упорно отказываются это понимать, зато и нудно и
 GS> настойчиво требуют им доложить, какие это у ассемблера есть
 GS> возможности, которых нету в сях ;)))
Hа самом деле правильная постановка вопроса должна звучать так "какие
возможности есть у ЯВУ, которых нет у АСМ" ;)
 GS>                                                    Георгий
  WBR!  Maxim Polyanskiy.


Hу сейчас я вам урок грамотного программирования даду ;)
Привет Maxim!

Friday January 30 2004 22:59, Maxim Polyanskiy wrote to George Shepelev:

 MP>>> Просто он эфективно реализован с учетом возможностей данного
 MP>>> процессора и полного отсутствия ограничений в таком продвинутом
 MP>>> языке, как Ассемблер.
 GS>>  Hо некоторые упорно отказываются это понимать, зато и нудно и
 GS>> настойчиво требуют им доложить, какие это у ассемблера есть
 GS>> возможности, которых нету в сях ;)))
 MP>
 MP> Hа самом деле правильная постановка вопроса должна звучать так "какие
 MP> возможности есть у ЯВУ, которых нет у АСМ" ;)

Решать поставленые задачи за разумное время.


    Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28
    aka snipped-for-privacy@yahoo.com
    http://www.altor.tk , http://altor.sytes.net , ftp://altor.sytes.net



Hу сейчас я вам урок грамотного программирования даду ;)
Fri Jan 30 2004 22:59, Maxim Polyanskiy wrote to George Shepelev:

 MP> Hа самом деле правильная постановка вопроса должна звучать так "какие
 MP> возможности есть у ЯВУ, которых нет у АСМ" ;)

Писать работающие и сопровождаемые программы за разумное время.

WBR, Юрий.


Hу сейчас я вам урок грамотного программирования даду ;)
    Hello, Yuriy!

Пят Янв 30 2004, Yuriy K писал к Maxim Polyanskiy по  поводу "Hу сейчас я вам
урок грамотного программирования даду ;)."
 MP>> Hа самом деле правильная постановка вопроса должна звучать так
 MP>> "какие возможности есть у ЯВУ, которых нет у АСМ" ;)
 YK> Писать работающие и сопровождаемые программы за разумное время.
Чушь. Это возможности программиста а не языка.

 YK> WBR, Юрий.
  WBR!  Maxim Polyanskiy.


Site Timeline