(hard)core test na AVR

Miroslav Šinko sinkomiro@gmail.com
Pátek Prosinec 5 10:36:37 CET 2008


Dňa 5. december 2008 9:24, Jan Waclawek <konfera@efton.sk> napísal/a:
>>> A teraz by si mohol skusit ten ret ked sa stack pointer nastavi pod stack pointer :-) Schvalne, akou metodikou by sa na to dalo ist?
>>
>>Obavam sa, ze nerozumiem pointe. Do SP naplnim adresu leziacu pod
>>adresou SP registra v datovej pamati. Napr. v tom mojom tiny13 je iba
>>SPL na adrese 3Dh t.j. pamatova adresa bude 5Dh.
>
> Ano, toto mi nie celkom docvaklo, ze u AVRka s tym maniakalnym setrenim klopakov v registroch bude pravdepodobne vzdy menej bitov v SP nez je ich v PC, takze cast bitov bude pri tom ret-e nedefinovanych....
>
>>SP teda nastavim na
>>5C alebo 5B (skor 5B, lebo ret urobi SP+2). Teraz pride instrukcia
>>ret. SP sa "nejako" zvysi o 2 (to "nejako" chces asi testovat) a
>>vyberie adresu kam nasledne skoci program. Ak by sa to spravalo uplne
>>jednoducho, tak sa SP zvysi o 2, z bytov na adresach 5D a 5E vyberie
>>hodnotu adresy a tam skoci program. Na adrese 5D je SPL s
>>predpokladanou hodnotou 5D, na adrese 5E nie je ziaden register
>>definovany. Kde teda skoci program je silne otazne. Ak by sa to +2
>>spravalo inac, vysledkom moze byt ze SP ukaze "kamsi", odkial vezme
>>adresu, kde bude kod pokracovat.
>
> Presne "to" ma zaujima.

No tak presne "to" bude tazke zistit :-)

> Mimochodom, nedocital som sa nikde ani taku zakladnu vec, ze v akom poradi sa adresa uklada na stack. Aj to nieco svedci o urovni dokumentacie. Nie, netvrdim, ze je to nejako zvlast uzitocna ci potrebna vec, ale tiez je to o tom, ze "dali sme vam cecko tak co viac chcete".

Hej.. pozeral som pdf-ka, nenasiel som. Dalo by sa to odsledovat v
simulatore. Niekto to urobil za nas a zverejnil peknu hracku:
http://www.cs.uakron.edu/~margush/306/ppt/06stackNcall.ppt
na strane 32 vidno to poradie.

> Ale uplne najzakladnejsia otazka je, ze ako zistit, kde ten program bude pokracovat...?

Vecer som sa este hral so simulatorom v AVRStudiu. To Z+ nasimuloval
uplne presne, vysledkom v r30 bola 0. Tak som skusil simulovat aj
stack podla toho, ako som popisal. Vysledok bol zabavny :-) Po
instrukciu ret malo pocitadlo krokov od resetu hodnotu asi 13
(nepodstatne). Urobil som krok -> hodnota pocitadla 444, vo vypisoch
niekolkokrat "stack underflow" a "invalid opcode FFFF" a PC za
zastavil na 0 :-)

miro


Další informace o konferenci Hw-list