Do you have a question? Post it now! No Registration Necessary
Subject
- Posted on
- Maxim Polyanskiy
January 26, 2004, 11:04 pm

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.
Компилируй!
==== 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.
Давай, ужимай. Хотя бы в 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
С уважением,
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.
Вт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> имеет ОВЕРХЕД, а хваленое быстрое написание на деле является мифом ;)
А кто сказал, что быстрое написание на Си обусловлдено меньшим
количеством необходимых нажатий клавиш?
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
С уважением,
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> количеством необходимых нажатий клавиш?
Можно я мысль скажу? ;-) На мой взгляд, есть два способа разрабатывать что бы
то ни было (в том числе - писать программы).
-- Первый способ подразумевает, что разработчик создает именно _само_ это
устройство/программу. То есть , в сущности, пишет "набор инструкций", "рецепт"
или алгоритм, точно следуя которому можно получить экземпляр работающего
устройства/программы. Получить, например, при помощи компилятора, или отдав
комплкт КД на завод и заплатив бабки, и т.д.
Соответственно, при этом подходе разработка алгоритма получения работающего
экземпляра - это "всему голова" и главная цель. Условно можно представить, что
разработчик как бы "напрямую общается с материей".
-- Второй способ подразумевает, что не разрабатывается не само устройство, а
создается _описание_ того, как его разрабатывали. Разработчик при этом как бы
общается с другим разработчиком, который будет читать это описание. Возможно,
этим "другим разработчиком" будет он сам, когда через полгода - год ему
придется вносить изменения в проект, скажем, по требованию заказчика.
Само устройство/программа при этом является "побочным продуктом" такого
описания, поскольку описание предназначено в первую очередь для человека.
Работающее изделие/программа при этом не является главной целью, а играет,
если угодно, почетную, но - увы! - скромную роль _теста_, доказывающего, что
описание правильное.
Все начинают с первого способа, экстремальная форма которого на современном
жаргоне называется кульхацкерством. Понимание чем плох первый способ, и чем
хорош второй, приходит постепенно, с годами. И не всем.
Пока, Алексей
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
Задачу ты решил не ту же, что и компилятор Си.
Кстати, чтобы разобраться, как она работает, мне понадобилось раза в
три больше времени, чем в сишном варианте. (из-за прыжка внутрь функции)
Так что это ассемблер более способствует к трюкачеству, а не Си.
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.
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.
С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
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.
Чет Янв 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
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.
Пят Янв 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!" что-ли?
AB>> В общем, с 1000% оверхеда - разобрались. Будем разбираться с 100%
MP> Могу предложить пару реализаций с 200% оверхедом си. Компилировать буду сам.
Типа, чтобы Сишники не включили нужный уровень оптимизации :)
MP> Алгоритм си будет книжным примером!
Это "hello, world!" что-ли?
--
С уважением,
Andy
С уважением,
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ю Что сам не видел что постит.
С уважением, Дима Орлов.
> 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
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.
Пят Янв 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
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, Юрий.
MP> Hа самом деле правильная постановка вопроса должна звучать так "какие
MP> возможности есть у ЯВУ, которых нет у АСМ" ;)
Писать работающие и сопровождаемые программы за разумное время.
WBR, Юрий.

Hу сейчас я вам урок грамотного программирования даду ;)
Hello, Yuriy!
Пят Янв 30 2004, Yuriy K писал к Maxim Polyanskiy по поводу "Hу сейчас я вам
урок грамотного программирования даду ;)."
MP>> Hа самом деле правильная постановка вопроса должна звучать так
MP>> "какие возможности есть у ЯВУ, которых нет у АСМ" ;)
YK> Писать работающие и сопровождаемые программы за разумное время.
Чушь. Это возможности программиста а не языка.
YK> WBR, Юрий.
WBR! Maxim Polyanskiy.
Пят Янв 30 2004, Yuriy K писал к Maxim Polyanskiy по поводу "Hу сейчас я вам
урок грамотного программирования даду ;)."
MP>> Hа самом деле правильная постановка вопроса должна звучать так
MP>> "какие возможности есть у ЯВУ, которых нет у АСМ" ;)
YK> Писать работающие и сопровождаемые программы за разумное время.
Чушь. Это возможности программиста а не языка.
YK> WBR, Юрий.
WBR! Maxim Polyanskiy.
Site Timeline
- » FTDI FT8U232AM
- — Next thread in » Microcontrollers (Russian)
-
- » Хелп фром гуру
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » (PDF) Atlas of Upper Gastrointestinal and Hepato Surgery 2nd Ed by CLAVIEN
- — The site's Newest Thread. Posted in » Electronics (Polish)
-
- » (PDF) Aesthetic Surgery Techniques - A Case-Based Approach by James D. Fra...
- — The site's Last Updated Thread. Posted in » Embedded Programming
-