Как я забавляюсь...
|
|
lvd | Дата: Воскресенье, 2008-01-20, 01:48:08 | Сообщение # 16 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Статус: Offline
| Quote (KOE) А вот где ве1 рулит... там, вроде бы, достаточно сделать xor в регистре и все тут же будет выведено в порт, без лиших аутов. И симметричный меандр сделать проще, нечто типа xor - jmp и т.д. Ну-кa, подай на неё 20Мгц... А таймер раскочегарь до 64Мгц (это я про аватару)... PS: и вообще, дёргать ногами - не царское это дело. ;-)
Многого нет здесь: http://lvd.nedopc.com
Сообщение отредактировал lvd - Воскресенье, 2008-01-20, 01:49:22 |
|
| |
KOE | Дата: Воскресенье, 2008-01-20, 01:51:14 | Сообщение # 17 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Статус: Offline
| Да я не про мегагерцы, а про подход к программированию. Имхо, грамотнее. Если бы еще и команды Тесей за 1 такт делал, то вааще ему б цены не было.
Мы рождены, чтоб сказку сделать былью "Кто не обломался, тем еще предстоит"
|
|
| |
lvd | Дата: Воскресенье, 2008-01-20, 01:57:21 | Сообщение # 18 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Статус: Offline
| Quote (KOE) Да я не про мегагерцы, а про подход к программированию. Имхо, грамотнее. Если бы еще и команды Тесей за 1 такт делал, то вааще ему б цены не было. Подход к программированию: накатал на сях и работает. =) НЕграмотнее. Ибо это уже не load-store риск получается, что ограничивает макс. частоту, увеличивает пожирание лектрищства. И только асмописцы радуюЦЦо и писаюЦЦо... =)
Многого нет здесь: http://lvd.nedopc.com
|
|
| |
KOE | Дата: Воскресенье, 2008-01-20, 02:08:52 | Сообщение # 19 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Статус: Offline
| Quote (lvd) Подход к программированию: накатал на сях и работает. =) Ты знаешь, в последнее время прикалывает Хотя раньше был жутким противником. А щас все пох стало. Лишь бы работало.
Мы рождены, чтоб сказку сделать былью "Кто не обломался, тем еще предстоит"
|
|
| |
KOE | Дата: Воскресенье, 2008-01-20, 11:03:45 | Сообщение # 20 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Статус: Offline
| Кстати, Вадер, скомпилил ту же самую программку иаром, получилось практически то же самое :D
Мы рождены, чтоб сказку сделать былью "Кто не обломался, тем еще предстоит"
Сообщение отредактировал KOE - Воскресенье, 2008-01-20, 11:04:19 |
|
| |
lvd | Дата: Воскресенье, 2008-01-20, 11:19:57 | Сообщение # 21 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Статус: Offline
| Это свидетельствует о том, что если не юзать принтф, флоаты и длинные инты, не хуярить по массивам, указателям и не заниматься прочими извратами (с т.з. мелкого 8битного проца), то использование сей вместо асма даст фиксированный оверхед. Иначе же - получится как тут. =)))
Многого нет здесь: http://lvd.nedopc.com
|
|
| |
KOE | Дата: Воскресенье, 2008-01-20, 18:40:46 | Сообщение # 22 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Статус: Offline
| Quote (lvd) Это свидетельствует о том, что если не юзать принтф, флоаты и длинные инты, не хуярить по массивам, указателям и не заниматься прочими извратами (с т.з. мелкого 8битного проца), то использование сей вместо асма даст фиксированный оверхед. Ну не все так здорово. Вот скомпилил иаром программку (делает 'бегущий огонек' на линейке из светодиодов, кнопкой регулируется скорость): Code #include <iom8515.h>
#pragma vector=TIMER1_OVF_vect __interrupt void timer(void);
#pragma vector=INT2_vect __interrupt void knopka(void);
unsigned char a; unsigned char tempo; bool flajok; bool drebezg;
// ---------------------------------------------------
int main(void) { DDRA = 0xff; DDRE = 0; PORTE =0; TCCR1A = 0; TCCR1B = 2; TIMSK = 128;
GICR = 32; EMCUCR = 0; SREG = 128; a=1; PORTA=a; flajok=0; drebezg=0; tempo = 0x1f;
while(1) { }; // Вечный кайф };
// ---------------------------------------------------
__interrupt void timer(void)
{ if (flajok) {a<<=1; if(!a) {flajok=0; a=64;}} else {a>>=1; if(!a) {flajok=1; a=2;}};
PORTA = a; TCNT1H = tempo; TCNT1L = 0; drebezg=0; };
// ---------------------------------------------------
__interrupt void knopka(void) { if(!drebezg) { drebezg=1; tempo=tempo+10; if (tempo>200) tempo=0; }; };
// --------------------------------------------------- Получил код длиной в 971 байт. В настройках компилера поставил максимальную оптимизацию по объему. А на асме почти в 2 раза короче получается.
Мы рождены, чтоб сказку сделать былью "Кто не обломался, тем еще предстоит"
Сообщение отредактировал KOE - Воскресенье, 2008-01-20, 18:53:18 |
|
| |
fk0 | Дата: Воскресенье, 2008-01-20, 19:13:37 | Сообщение # 23 |
Активист
Группа: Человеки
Сообщений: 178
Статус: Offline
| Quote (KOE) А почему на картинке не чистый меандер? Потомучта GCC гавно, поделки студентов. Вот в IAR -- там чоткий меандр внатуре.
[САМОЗАБАНЕН]
|
|
| |
KOE | Дата: Воскресенье, 2008-01-20, 19:14:42 | Сообщение # 24 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Статус: Offline
| Quote (fk0) Потомучта GCC гавно, поделки студентов. Вот в IAR -- там чоткий меандр внатуре. Нифига, читай топег дальше. Иар такой же в точности код дает.
Мы рождены, чтоб сказку сделать былью "Кто не обломался, тем еще предстоит"
|
|
| |
fk0 | Дата: Воскресенье, 2008-01-20, 19:15:29 | Сообщение # 25 |
Активист
Группа: Человеки
Сообщений: 178
Статус: Offline
| Quote (KOE) Получил код длиной в 971 байт. В настройках компилера поставил максимальную оптимизацию по объему. А на асме почти в 2 раза короче получается. Сколько стоит AVR с 2 раза большим объёмом памяти? Сколько стоит твой рабочий день? Вопрос, надеюсь, отпал? (за редкими *исключениями*, которые начинаются с нескольких тысяч штук в месяц при значительной доле той AVR в себестоимости -- у вас в институте что-то по экономике же было?)
[САМОЗАБАНЕН]
|
|
| |
KOE | Дата: Воскресенье, 2008-01-20, 19:17:57 | Сообщение # 26 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Статус: Offline
| Quote (fk0) Сколько стоит AVR с 2 раза большим объёмом памяти? Сколько стоит твой рабочий день? Вопрос, надеюсь, отпал? (за редкими *исключениями* Вцелом согласен. Но как-то неожиданно вышло. Quote (fk0) с нескольких тысяч штук в месяц при значительной доле той AVR в себестоимости Серийное производство в России - смешно и глупо.
Мы рождены, чтоб сказку сделать былью "Кто не обломался, тем еще предстоит"
|
|
| |
lvd | Дата: Воскресенье, 2008-01-20, 19:55:34 | Сообщение # 27 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Статус: Offline
| Quote (KOE) Получил код длиной в 971 байт. Можно *.lst или *.asm ?
Многого нет здесь: http://lvd.nedopc.com
|
|
| |
lvd | Дата: Воскресенье, 2008-01-20, 19:56:18 | Сообщение # 28 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Статус: Offline
| Quote (fk0) Сколько стоит AVR с 2 раза большим объёмом памяти? Найди мне attiny2313 с 2 раза большим объёмом... в 20ногом корпусе.
Многого нет здесь: http://lvd.nedopc.com
|
|
| |
KOE | Дата: Воскресенье, 2008-01-20, 20:44:42 | Сообщение # 29 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Статус: Offline
| Quote (lvd) Можно *.lst или *.asm ? Чёто у мну не получилось отдельно выгрузить в IAR-e ассемблерный текст [он, сцуко, на экран выводится, но никуды не копируется], вот тебе код в HEX-формате, думаю, его можно аврстудией отдизасемблить. А ты решил скомпилить то же самое на GCC и сравнить результаты???
Мы рождены, чтоб сказку сделать былью "Кто не обломался, тем еще предстоит"
Сообщение отредактировал KOE - Воскресенье, 2008-01-20, 20:51:37 |
|
| |
lvd | Дата: Воскресенье, 2008-01-20, 20:55:17 | Сообщение # 30 |
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Статус: Offline
| Quote (KOE) Чёто у мну не получилось отдельно выгрузить в IAR-e ассемблерный текст [он, сцуко, на экран выводится, но никуды не копируется], вот тебе код в HEX-формате, думаю, его можно аврстудией отдизасемблить.Прикрепления: koe.a90(1Kb) Я ниасилел, ты что, размер кода меряешь по размеру ihex??? Можно сделать ихекс по 1 байту на строчке, тогда он раз в 10 будет больше, чем ихекс со всем кодом в 1 строчке... Посмотрел идой. Вначале всякий бред идёт, насчёт инициализации (вон, фк0 расскажет про бсс, текст и прочее). Это фиксированная прибавка. Потом - вполне нолрмально, если учесть, что он не распихивает небольшое кл-во переменных по регистрам. У тебя это можно сделать, а если у тебя переменных 10000 штук - то волей-невоей придётся за ними лазить через lds/sts Таймерное прерывание Code ROM:0027 TIMER1_OVF: ; CODE XREF: ROM:0006j ROM:0027 st -Y, r17 ROM:0028 st -Y, r16 ROM:0029 in r17, SREG ROM:002A lds r16, unk_1000A2 ROM:002C tst r16 ROM:002D lds r16, unk_1000A0 ROM:002F breq loc_3A ROM:0030 lsl r16 ROM:0031 sts unk_1000A0, r16 ROM:0033 tst r16 ROM:0034 brne loc_45 ROM:0035 ldi r16, 0 ROM:0036 sts unk_1000A2, r16 ROM:0038 ldi r16, 0x40 ; '@' ROM:0039 rjmp loc_43 ROM:003A ; --------------------------------------------------------------------------- ROM:003A ROM:003A loc_3A: ; CODE XREF: TIMER1_OVF+8j ROM:003A lsr r16 ROM:003B sts unk_1000A0, r16 ROM:003D tst r16 ROM:003E brne loc_45 ROM:003F ldi r16, 1 ROM:0040 sts unk_1000A2, r16 ROM:0042 ldi r16, 2 ROM:0043 ROM:0043 loc_43: ; CODE XREF: TIMER1_OVF+12j ROM:0043 sts unk_1000A0, r16 ROM:0045 ROM:0045 loc_45: ; CODE XREF: TIMER1_OVF+Dj ROM:0045 ; TIMER1_OVF+17j ROM:0045 lds r16, unk_1000A0 ROM:0047 out PORTA, r16 ROM:0048 lds r16, unk_1000A1 ROM:004A out TCNT1H, r16 ROM:004B ldi r16, 0 ROM:004C out TCNT1L, r16 ROM:004D sts unk_1000A3, r16 ROM:004F out SREG, r17 ROM:0050 ld r16, Y+ ROM:0051 ld r17, Y+ ROM:0052 reti Кнопочное прерывание: Code ROM:0053 loc_53: ; CODE XREF: ROM:000Dj ROM:0053 st -Y, r31 ROM:0054 st -Y, r30 ROM:0055 st -Y, r17 ROM:0056 st -Y, r16 ROM:0057 in r17, SREG ROM:0058 lds r16, unk_1000A3 ROM:005A tst r16 ROM:005B brne loc_68 ROM:005C ldi r16, 1 ROM:005D sts unk_1000A3, r16 ROM:005F ldi r30, -0x60 ; 'à' ROM:0060 ldi r31, 0 ROM:0061 ldd r16, Z+1 ROM:0062 subi r16, -0xA ; '¡' ROM:0063 std Z+1, r16 ROM:0064 cpi r16, -0x37 ; 'ã' ROM:0065 brcs loc_68 ROM:0066 ldi r16, 0 ROM:0067 std Z+1, r16 ROM:0068 ROM:0068 loc_68: ; CODE XREF: ROM:005Bj ROM:0068 ; ROM:0065j ROM:0068 out SREG, r17 ROM:0069 ld r16, Y+ ROM:006A ld r17, Y+ ROM:006B ld r30, Y+ ROM:006C ld r31, Y+ ROM:006D reti
Многого нет здесь: http://lvd.nedopc.com
Сообщение отредактировал lvd - Воскресенье, 2008-01-20, 21:01:41 |
|
| |
|
|