Приветствую Вас Гость | RSS


Главная страница » Как я забавляюсь... - Страница 2 - ZX-Форум » Регистрация » ВходПятница
2024-12-27
01:03:21
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Как я забавляюсь...
lvdДата: Воскресенье, 2008-01-20, 01:48:08 | Сообщение # 16
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: 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
Репутация: 5
Статус: Offline
Да я не про мегагерцы, а про подход к программированию. Имхо, грамотнее. Если бы еще и команды Тесей за 1 такт делал, то вааще ему б цены не было.

Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
lvdДата: Воскресенье, 2008-01-20, 01:57:21 | Сообщение # 18
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Quote (KOE)
Да я не про мегагерцы, а про подход к программированию. Имхо, грамотнее. Если бы еще и команды Тесей за 1 такт делал, то вааще ему б цены не было.

Подход к программированию: накатал на сях и работает. =)

НЕграмотнее. Ибо это уже не load-store риск получается, что ограничивает макс. частоту, увеличивает пожирание лектрищства. И только асмописцы радуюЦЦо и писаюЦЦо... =)


Многого нет здесь: http://lvd.nedopc.com
 
KOEДата: Воскресенье, 2008-01-20, 02:08:52 | Сообщение # 19
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (lvd)
Подход к программированию: накатал на сях и работает. =)

Ты знаешь, в последнее время прикалывает smile
Хотя раньше был жутким противником. А щас все пох стало. Лишь бы работало.


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
KOEДата: Воскресенье, 2008-01-20, 11:03:45 | Сообщение # 20
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Кстати, Вадер, скомпилил ту же самую программку иаром, получилось практически то же самое biggrin :D biggrin

Прикрепления: 7882607.png (12.6 Kb)


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"


Сообщение отредактировал KOE - Воскресенье, 2008-01-20, 11:04:19
 
lvdДата: Воскресенье, 2008-01-20, 11:19:57 | Сообщение # 21
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Это свидетельствует о том, что если не юзать принтф, флоаты и длинные инты, не хуярить по массивам, указателям и не заниматься прочими извратами (с т.з. мелкого 8битного проца), то использование сей вместо асма даст фиксированный оверхед.
Иначе же - получится как тут. =)))


Многого нет здесь: http://lvd.nedopc.com
 
KOEДата: Воскресенье, 2008-01-20, 18:40:46 | Сообщение # 22
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: 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
Репутация: 0
Статус: Offline
Quote (KOE)
А почему на картинке не чистый меандер?

Потомучта GCC гавно, поделки студентов. Вот в IAR -- там чоткий меандр внатуре.


[САМОЗАБАНЕН]
 
KOEДата: Воскресенье, 2008-01-20, 19:14:42 | Сообщение # 24
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (fk0)
Потомучта GCC гавно, поделки студентов. Вот в IAR -- там чоткий меандр внатуре.

Нифига, читай топег дальше. Иар такой же в точности код дает.


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
fk0Дата: Воскресенье, 2008-01-20, 19:15:29 | Сообщение # 25
Активист
Группа: Человеки
Сообщений: 178
Репутация: 0
Статус: Offline
Quote (KOE)
Получил код длиной в 971 байт. В настройках компилера поставил максимальную оптимизацию по объему. А на асме почти в 2 раза короче получается.

Сколько стоит AVR с 2 раза большим объёмом памяти? Сколько стоит твой рабочий день? Вопрос, надеюсь, отпал? (за редкими *исключениями*, которые начинаются с нескольких тысяч штук в месяц при значительной доле той AVR в себестоимости -- у вас в институте что-то по экономике же было?)


[САМОЗАБАНЕН]
 
KOEДата: Воскресенье, 2008-01-20, 19:17:57 | Сообщение # 26
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (fk0)
Сколько стоит AVR с 2 раза большим объёмом памяти? Сколько стоит твой рабочий день? Вопрос, надеюсь, отпал? (за редкими *исключениями*

Вцелом согласен. Но как-то неожиданно вышло.

Quote (fk0)
с нескольких тысяч штук в месяц при значительной доле той AVR в себестоимости

Серийное производство в России - смешно и глупо.


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"
 
lvdДата: Воскресенье, 2008-01-20, 19:55:34 | Сообщение # 27
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Quote (KOE)
Получил код длиной в 971 байт.

Можно *.lst или *.asm ?


Многого нет здесь: http://lvd.nedopc.com
 
lvdДата: Воскресенье, 2008-01-20, 19:56:18 | Сообщение # 28
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: Offline
Quote (fk0)
Сколько стоит AVR с 2 раза большим объёмом памяти?

Найди мне attiny2313 с 2 раза большим объёмом... в 20ногом корпусе.


Многого нет здесь: http://lvd.nedopc.com
 
KOEДата: Воскресенье, 2008-01-20, 20:44:42 | Сообщение # 29
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2318
Репутация: 5
Статус: Offline
Quote (lvd)
Можно *.lst или *.asm ?

Чёто у мну не получилось отдельно выгрузить в IAR-e ассемблерный текст [он, сцуко, на экран выводится, но никуды не копируется], вот тебе код в HEX-формате, думаю, его можно аврстудией отдизасемблить.

А ты решил скомпилить то же самое на GCC и сравнить результаты???

Прикрепления: koe.a90 (0.9 Kb)


Мы рождены, чтоб сказку сделать былью
"Кто не обломался, тем еще предстоит"


Сообщение отредактировал KOE - Воскресенье, 2008-01-20, 20:51:37
 
lvdДата: Воскресенье, 2008-01-20, 20:55:17 | Сообщение # 30
Retry, Abort, Ignore?
Группа: Человеки
Сообщений: 2528
Репутация: 13
Статус: 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
 
  • Страница 2 из 3
  • «
  • 1
  • 2
  • 3
  • »
Поиск:

the DLCorp © 2006