Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

mikrokontroleri od A do Sh

[es] :: Elektronika :: Mikrokontroleri :: mikrokontroleri od A do Sh
(TOP topic, by veselinovic)
Strane: << < .. 2 3 4 5 6 7

[ Pregleda: 12741 | Odgovora: 122 ]

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sander
Aleksandar Golovic
Beograd

Član broj: 21336
Poruke: 186
*.smin-1.sezampro.yu.



Profil

icon Re: mikrokontroleri od A do Sh21.09.2008. u 17:23
Molio bih te ako mozes da postavis kod u oba slucaja za MC9S08 i u kojim slucajevima bi isao najbrzi kod a u kom sporija varijanta. Jos jedanput da napomenem, kod PIC-a sam dao kod i za najsporiju varijantu koja na srecu u 99% slucajeva nece biti primenjena jer je malo verovatno da ce brojevi nad kojima se vrsi operacija biti u razlicitim bankama.
Napravio sam gresku kod koda za AVR, LDI instrukcija koristi samo registre 16-32. Mislim da si pogresio za velicinu koda kod AVR u najbrzoj varijanti kao sto sam ja u jednom od predhodnih postova, 6 word-a odnosno 12 bajta. Ideja da proverim neke od testova je zato sto mi u njima nesto ne stima, recimo kopiranje bloka memorije i njihovo poredjenje, to sigurno PIC to radi sigurno brze (vec samo objasnjavao) a kod njih je 863uS naspram 3,3ms, sto je mnogo mnogo je, tako da ona moja vec recena konstatacija stoji da su testovi tendeciozno radjeni da favorizuju pojedine mikrokontrolere.
21.09.2008. u 17:23 

korak
Nis

Član broj: 125522
Poruke: 296
*.dynamic.sbb.rs.



Profil

icon Re: mikrokontroleri od A do Sh22.09.2008. u 11:06
Evo koda:

Za najbolji slucaj, kada su sve varijable na nultoj strani:
Code:

  ldx 20;
  repeat
    ldaa [zwA.1];
    adda [zwB.1];
    staa [zwC.1];
    ldaa [zwA.0];
    adca [zwB.0];
    staa [zwC.0];
  until decr(indX) =0 ;

i prevod:
Code:

   $e025 : $ae14       [2] ldx      $14
   $e027 : $b652       [3] ldaa    [$52]
   $e029 : $bb54       [3] adda    [$54]
   $e02b : $b756       [3] staa    [$56]
   $e02d : $b651       [3] ldaa    [$51]
   $e02f : $b953       [3] adca    [$53]
   $e031 : $b755       [3] staa    [$55]
   $e033 : $5bf2       [4] dbnzx    $e027

u najgorem slucaju su sve varijable van nulte strane, ali je izvorni kod isti, pa dajem samo prevod:
Code:

   $e026 : $ae14       [2] ldx      $14
   $e028 : $c60102     [4] ldaa    [$0102]
   $e02b : $cb0104     [4] adda    [$0104]
   $e02e : $c70106     [4] staa    [$0106]
   $e031 : $c60101     [4] ldaa    [$0101]
   $e034 : $c90103     [4] adca    [$0103]
   $e037 : $c70105     [4] staa    [$0105]
   $e03a : $5bec       [4] dbnzx    $e028


I ja sam napravio gresku, u srednjim zagradama je trajanje naredbe u ciklusima, i vidis da skok na pocetak petlje traje 4 ciklusa, a ja sam racunao 3 (po inerciji jer svi uslovni skokovi toliko traju, ali ovaj je skok sa dekrementiranjem). Zbog toga dodaj po 20 ciklusa za trajanje izrazeno ciklusima, i za vreme dodaj 1us iz istog razloga.

Pozdrav.
22.09.2008. u 11:06 

korak
Nis

Član broj: 125522
Poruke: 296
*.dynamic.sbb.rs.



Profil

icon Re: mikrokontroleri od A do Sh23.09.2008. u 13:00
Tragajuci na internetu za programima koji mogu da posluze kao validan test MCU-ova, nisam nasao nista sto bi mi bilo prihvatljivo. Ali sam nasao nesto sto predstavlja analizu koriscenja pojedinih iskaza, struktura i tipova u nekom netrivijalnom programu. To ne mora da odgovara svakom programu, ali je neki prosek. Ova analiza se ocito odnosi na vise programske jezike, pa je pitanje kako bi se to preslikalo na asembler.

Pozdrav.
Prikačeni fajlovi
23.09.2008. u 13:00 

[es] :: Elektronika :: Mikrokontroleri :: mikrokontroleri od A do Sh
(TOP topic, by veselinovic)
Strane: << < .. 2 3 4 5 6 7

[ Pregleda: 12741 | Odgovora: 122 ]

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.