Vlákno názorů k článku Co se Benderovi honí hlavou od rdk - Opet nadherny clanek. Diky. Skoda, ze v priklade je...

  • Článek je starý, nové názory již nelze přidávat.
  • 24. 4. 2008 8:36

    rdk (neregistrovaný)
    Opet nadherny clanek. Diky.

    Skoda, ze v priklade je zminen jenom 1 typ preruseni (tady nemaskovatelne), pritom treba 6502 pouziva maskovatelne i nemaskovatelne. Bylo by zajimave vysvetlit rozdily.

    Jinak ohledne: """Přerušovací rutina, která modifikuje obsah obou pracovních registrů tedy musí začínat a končit takto:"""

    Ta rutina nemusi nutne pouzivat zasobnik, i kdyz je to bezna praxe. Dulezite je navratit obsah menenych registru zpet, no a protoze leckdy jde o to, aby preruseni bylo vykonano co nejrychleji, tak lze pouzit i jine techniky.

    Napr. docela

    ; vstup do irq
    IRQ STA tempadd ; ulozeni A nekam docasne
    ... vlastni prace v preruseni
    LDA tempadd ; nacteni A z docasneho ulozeni
    RTS ; navrat z preruseni

    tempadd .byte 00 ; temporary prostor


    Nebo jeste drsneji

    ; vstup do irq
    IRQ STA zpet+1 ; ulozeni A primo do mista zpetneho nacteni
    ... vlastni prace v preruseni
    zpet LDA #00 ; nacteni A, kde bude 00 zmenena podle vstupu do IRQ
    RTS ; navrat z preruseni


    Tyto a obdobne techniky dost zasadne zkracuji pocet cyklu potrebnych na preruseni, protoze prace se zasobnikem je vetsinou casove nejnakladnejsi.
  • 24. 4. 2008 9:09

    Pavel Tišnovský
    Zlatý podporovatel
    Pravda, pokud budeme předpokládat, že přerušení je jednoúrovňové (a nebude se tedy před ukončením přerušovací rutiny volat přerušení další), tak je použití zásobníku overkill. Taky na některých mikroprocesorech lze použít stínové registry (například druhou sadu registrů) - viz Z80, 8048, 8051 atd. Pro co největší urychlení přerušovací rutiny jsou všechny postupy dobré.