Отговори на тема  [ 13 мнения ] 
IAR 
Автор Съобщение
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение IAR
Нещо не ми е ясно в асемблер листинга които ми дава за функциите от прекъсванията.
това е за АТмега

Код:
Timer0_Overflow:
    0000DC   938A             ST      -Y,R24
    0000DE   93FA             ST      -Y,R31
    0000E0   93EA             ST      -Y,R30
    0000E2   923A             ST      -Y,R3
    0000E4   922A             ST      -Y,R2
    0000E6   921A             ST      -Y,R1
    0000E8   920A             ST      -Y,R0
    0000EA   937A             ST      -Y,R23
    0000EC   936A             ST      -Y,R22
    0000EE   935A             ST      -Y,R21
    0000F0   934A             ST      -Y,R20
    0000F2   933A             ST      -Y,R19
    0000F4   932A             ST      -Y,R18
    0000F6   931A             ST      -Y,R17
    0000F8   930A             ST      -Y,R16
    0000FA   B78F             IN      R24,SREG

  char PORT = ~PIND & 0xF0;
    0000FC   B310             IN      R17,PIND
    0000FE   9510             COM     R17
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
---------------------------------------------------
    000160   FB17             BST     R17,7
    000162   F41E             BRTC    0x16A
                  else if (PORT & 0x80)    CorrectValue(-10);
    000164   EF06             LDI     R16,0xF6
    000166   940E 01AF        CALL    CorrectValue
    00016A   BF8F             OUT     SREG,R24
    00016C   9109             LD      R16,Y+
    00016E   9119             LD      R17,Y+
    000170   9129             LD      R18,Y+
    000172   9139             LD      R19,Y+
    000174   9149             LD      R20,Y+
    000176   9159             LD      R21,Y+
    000178   9169             LD      R22,Y+
    00017A   9179             LD      R23,Y+
    00017C   9009             LD      R0,Y+
    00017E   9019             LD      R1,Y+
    000180   9029             LD      R2,Y+
    000182   9039             LD      R3,Y+
    000184   91E9             LD      R30,Y+
    000186   91F9             LD      R31,Y+
    000188   9189             LD      R24,Y+
    00018A   9518             RETI


Нещо не схващам какво точно прави с тези операции с регистрите в началото и края. Това са 32 цикъла на всяко прекъсване и цели 64баита в всяка функция за прекъсване 8O


Чет Юни 02, 2005 6:54 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
С риск да се покажа много тъп, неразбирайки Атмелите, това не е ли запис на контекста (разните му там регистри/променливи) в стека? Щото нали прекъсване, стек абе на всички контролери и на всеки компилатор тва го има.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Чет Юни 02, 2005 8:28 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Сеп 26, 2004 4:11 pm
Мнения: 3750
Местоположение: София
Мнение 
Пак IAR и MSP430 това го няма.


Чет Юни 02, 2005 8:34 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Е как записва контекста. Нали тоя компилатор върти някви променливи за вътрешна употреба. Трябва да се съхранят някакси. Са ако MSP има неква хардуерна хитрана да го прави на бързо е друг въпрос, ама иначе. Друг е въпроса че на всеки компилатор по един или друг начин можеш да задаваш какво точно да се крие е стека.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Чет Юни 02, 2005 8:56 pm
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Надявах се някой вече да се е сблъсквал с това. Явно е някаква особенност при работата с АТмегата. Явно съм пропуснал нещо съществено като съм чел документацията на Мегата. :?


Чет Юни 02, 2005 9:04 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Пон Сеп 27, 2004 9:22 am
Мнения: 15501
Местоположение: София
Мнение 
Е що бе човек? Без да разбирам от меги, това си е най-нормално съхраняване на работни регистри в стека. Какво те притеснява - размера или бързодействието. По принцип компилатора си има вътрешни променливи (за математика, индекс за стека, по малки параметри към функции), които трябва да се съхранят при прекъсване. Това е един от недостатъците на С. Сега дали е точно такъв случая - виж в документацията - interrupt, context saving или нещо от сорта.

_________________
"Да еба и шибаната държава" мислеше си Гошо, докато се опитваше да улучи кофата за боклук от балкона на осмия етаж.


Пет Юни 03, 2005 9:09 am
Профил ICQ
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Чет Окт 07, 2004 1:22 pm
Мнения: 1949
Местоположение: София
Мнение 
Ами точно запис на контекста е :D А как така MSP нема такъв запис :?:


Пет Юни 03, 2005 10:34 am
Профил
Ранг: Минаващ
Ранг: Минаващ

Регистриран на: Пет Май 27, 2005 1:32 pm
Мнения: 40
Местоположение: Sofia
Мнение 
Ето един от документите, в които добре е описано всичко това:
http://www.atmel.com/dyn/resources/prod ... oc1234.pdf
В случая се вижда, че се записват всички scratch registers, както и един local register (R24) който явно е използван за съхраняване на статуса ти SREG. Към IAR си има документация която освен този PDF включва и друг касаещ пълната "анатомия" на модела използван от самия компилатор. До най-големи тънкости.


Пет Юни 03, 2005 11:10 am
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Не е добре човек да прекалява с бачкането щото изпростява и става неефективен. Ето днес като се наспах до късен следобяд за 5 минути видях защо е IAR-a ми дава този код .
Ами така става като от функцията на прекъсването извикаш друга функция и така стават доста неща за съхраняване.


Пет Юни 03, 2005 1:20 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Съб Сеп 25, 2004 12:32 pm
Мнения: 8382
Местоположение: София
Мнение 
IAR-а е тъп. :) Съхранява наред, без оглед дали е нужно или не.


Пет Юни 03, 2005 1:23 pm
Профил
Мнение 
Ìîãà ëè äà íå ñå ñúãëàñÿ ÷å IAR å òúï ;)
Âñè÷êè scratch ðåãèñòðè å íåîáõîäèìî äà áúäàò ñúõðàíåíè ïðè ïðåêúñâàíå ïîíåæå íå ñå çíàå â êîé ìîìåíò ùå íàñòúïè òî. Ñúùîòî âàæè è çà ñòàòóñ ðåãèñòúðà.
Çà ðàçëèêà îò ïðåêúñâàíèÿòà, ïðè èçâèêâàíå íà ôóíêöèÿ âå÷å ìîæå äà áúäàò ñúõðàíåíè íàèñòèíà ñàìî èçïîëçâàíèòå ðåãèñòðè...
Ñ ïî-ìàëêî ñúõðàíè ðåãèñòðè ïðîñòî íå âèæäàì êàê ìîæå äà ñå ìèíå îñâåí àêî
1) èçðè÷íî íå óêàæåòå ðåãèñòðèòå R20-R24 äà íå ñå ïîëçâàò çà scratch (òîâà ñòàâà ñ îïöèÿ â êîìïèëàòîðà) è òå íå ñå ïîëçâàò â ISR-òî;
2) àêî ñå îêàæå, ÷å àáñîëþòíî íèêúäå â ïðîãðàìàòà íå ñå èçïîëçâàò íÿêîè scratch ðåãèñòðè, òîãàâà (ïðåäïîëàãàì ïðè âêëþ÷åíè îïòèìèçàöèè) IAR ùå ãè "îòñòðàíè" îò ñïèñúêà çà ñúõðàíÿâàíè ðåãèñòðè.


Пет Юни 03, 2005 1:36 pm
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Сега го тествах с няколко различни функции съхранява само това дето пипа в функцията и Статуса. Ако имаш обръшение към друга функция от функцията на пекъсването съхранява всички Scratch регистри.
Явно по идея ако ти трябва бързодеиствие трябва да избягваш подобни конструкции.
Може и да има и някаква оптимизация за това но поне аз не намирам как. Но това не означава че няма.


Пет Юни 03, 2005 1:38 pm
Профил
Ранг: Форумен бог
Ранг: Форумен бог
Аватар

Регистриран на: Нед Окт 31, 2004 9:19 pm
Мнения: 4464
Местоположение: Stara Zagora
Мнение 
Този последния пост излязъл докато писах моя.
А къде е тази опция за R20-R24,че не я виждам?


Пет Юни 03, 2005 1:41 pm
Профил
Покажи мненията от миналия:  Сортирай по  
Отговори на тема   [ 13 мнения ] 

Кой е на линия

Потребители разглеждащи този форум: 0 регистрирани и 6 госта


Вие не можете да пускате нови теми
Вие не можете да отговаряте на теми
Вие не можете да променяте собственото си мнение
Вие не можете да изтривате собствените си мнения
Вие не можете да прикачвате файл

Търсене:
Иди на:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.
Хостинг и Домейни