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

MC9S08, arhitektura, performanse, programiranje i razvojni alati

[es] :: Elektronika :: Mikrokontroleri :: MC9S08, arhitektura, performanse, programiranje i razvojni alati

Strane: < .. 1 2 3

[ Pregleda: 11131 | Odgovora: 46 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

pera89
Petar Dobrota
Zajechar

Član broj: 51904
Poruke: 64
91.150.121.*



Profil

icon Re: MC9S08, arhitektura, performanse, programiranje i razvojni alati04.10.2007. u 22:09 - pre 201 meseci
Citat:
_str_: Zašto A :=123 a ne A=123?


Zato sto je to pascal compiler. Dodela je ":=" a poredjenje "=".
 
Odgovor na temu

_str_

Član broj: 53798
Poruke: 878
*.mainstream.co.yu.



+10 Profil

icon Re: MC9S08, arhitektura, performanse, programiranje i razvojni alati05.10.2007. u 16:18 - pre 201 meseci
Ma pišem gluposti. Mislio sam da se ovde radi o sintezi asemblera i paskala. Sledeći put ću čitati pažljivije.
__*__
*___*
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 622
*.dynamic.sbb.co.yu.



+7 Profil

icon Re: MC9S08, arhitektura, performanse, programiranje i razvojni alati07.10.2007. u 19:57 - pre 201 meseci
Evo na sta sam mislio u predhodnom javljanju. Dajem primer dodeljivanja oznacenog bajta preko pointera 4-o bajtnoj varijabli. Prvi primer je preveden Metrowerks CodeWarrior-om 5.0 (odlican C kompajler), a drugi kompajlerom koji razvijam za PASCAL.

Code:

   idA = *pb1;

  0002 320000           LDHX   pb1
  0005 f6               LDA   ,X
  0006 cd0000           JSR   _SEXT8_32
  000a 95               TSX   
  000b af08             AIX   #8
  000d cd0000           JSR   _POP32


    idA := pb1^;

   $e00e : $320100     [5] ldhx    [$0100]
   $e011 : $f6         [3] ldaa   x[]
   $e012 : $97         [1] tax
   $e013 : $44         [1] lsra
   $e014 : $4f         [1] clra
   $e015 : $a200       [2] sbca     $00
   $e017 : $87         [2] psha
   $e018 : $8a         [3] pulh
   $e019 : $9eff03     [5] sthx   s[$03]
   $e01c : $8b         [2] pshh
   $e01d : $88         [3] pulx
   $e01e : $9eff01     [5] sthx   s[$01]

Prvi primer generise 13 bajtova, ali poziva dve procedure (jedna prosiruje znak sa 8 na 32 bita, a druga tu vrednost smesta u odrediste. Ova programska sekvenca (bez procedura) se izvrsava za 22 ciklusa, a kada se za prvu doda 26 i za drugu 39 dobija se ukupan broj ciklusa od 87 (4.35us).

Drugi primer generise 19 bajtova (6 vise), ali ne poziva nijednu proceduru, pa se tako izvrsava za 33 ciklusa (1.65us).

Dilema je: cemu dati prednost 13 bajtova i 87 ciklusa ili 19 bajtova i 33 ciklusa. Treba imati u vidu da se 4-ro bajtne varijable i pointeri na bajtove redje koriste.

Mozda je to samo stvar ukusa, sta mislite.

Pozdrav.
 
Odgovor na temu

tomam
Tomislav Milicevic
Beograd

Član broj: 104895
Poruke: 163
*.eunet.yu.



+4 Profil

icon Re: MC9S08, arhitektura, performanse, programiranje i razvojni alati07.10.2007. u 20:15 - pre 201 meseci
Pa ujljucis obe a koristis ih zvisno od optimizacije(duzina brzina)
 
Odgovor na temu

rsinisa
Siniša Radanočević
Smederevo

Član broj: 2716
Poruke: 1586
*.com
Via: [es] mailing liste



+321 Profil

icon Re: MC9S08, arhitektura, performanse, programiranje i razvojni alati07.10.2007. u 23:31 - pre 201 meseci
korak wrote:

> Dilema je: cemu dati prednost 13 bajtova i 87 ciklusa ili 19 bajtova i
> 33 ciklusa. Treba imati u vidu da se 4-ro bajtne varijable i pointeri na
> bajtove redje koriste.
> Mozda je to samo stvar ukusa, sta mislite.

Nije stvar ukusa vec konkretne potrebe; nekada se ukaze potreba za
brzinom, a nekada za prostorom. Idealno bi bilo kada bi kompajler imao
opciju koju vrstu optimizacije da primeni.

Pozdrav.
Sinisha
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 622
*.dynamic.sbb.co.yu.



+7 Profil

icon Re: MC9S08, arhitektura, performanse, programiranje i razvojni alati08.10.2007. u 12:06 - pre 201 meseci
Slazem se sa vama. Ali kada pogledate kakve vrednosti mogu bit, gde mogu biti, kog tipa mogu biti i koje binarne operacije se sa njima mogu izvesti, sto je tabelarno prikazano:

Code:

  vrednosti     Mesto          Tip Vrednosti    Binarna operacija
  
  Konstanta    Memorija          byte          +,-,div,mod,and,or,eor,shr,shl,>,<,>=,<=,<>,=,in
  Varijabla    Stek              shortint      +,-,div,mod,and,or,eor,shr,shl,>,<,>=,<=,<>,=,in
  Pointer      VrhSteka          word          +,-,div,mod,and,or,eor,shr,shl,>,<,>=,<=,<>,=,in
               ACCA              integer       +,-,div,mod,and,or,eor,shr,shl,>,<,>=,<=,<>,=,in
             AccA i Vrh Steka    longword      +,-,div,mod,and,or,eor,shr,shl,>,<,>=,<=,<>,=,in
                                 longint       +,-,div,mod,and,or,eor,shr,shl,>,<,>=,<=,<>,=,in
                                 char          +,>,<,>=,<=,<>,=,in
                                 string        +,>,<,>=,<=,<>,=
                                 skup          +,-,*,>=,<=,<>,=,in
                                 float         +,-,*,/,>,<,>=,<=,<>,=
                                 nabroiv       >,<,>=,<=,<>,=,in
                                 boolean       and,or,eor,>,<,>=,<=,<>,=,in


Broj kombinacija iz ove tabele je 2190. Idealno (i nerazumno) je napisati 2190 procedura i kod ce biti vrlo efikasan. Ali, to je sumanuto, vrse se uopstavanja, po cenu da se neki redji slucajevi prevode manje efikasno. Ako se ovome dodaju i unarne operacije, onda je broj kombinacija oko 3000.

Prilicno mi je tesko da u sve to uvedem i izbor optimizacije: na kraci kod ili vecu brzinu. Mislim, da je prihvatljivo resenje sto kraci kod, a tamo gde je potrebna veca brzina moze se napisati program u asembleru, sto kompajler podrzava. Primer koji sam ranije naveo je ekstreman, ali je naveden da pokaze dilemu. Mislimm da svi kada pisu u asembleru i rade sa 4-o bajtnim varijablama, pisu direktan kod, a ne rade to uz pomoci nekih procedura. Napominjem da je CodeWarrior napravio isti prevod i za optimizaciju na duzinu koda i na brzinu koda. Dakle 6 bajta manje i 54 ciklusa vise, sto dodje 6 ciklusa po svakom bajtu ustede.

Sa druge strane, pisanje prevoda, u fazi u kojoj je ono sada, je cist rutinski posao od kojeg ce me zaboleti prsti od kucanja. Prosto me mrzi da povecavam broj kombinacija uvodjenjem novih slucajeva (razlicita optimizacija). Mozda cu to da doradim kada zavrsim posao, i kada obavim sva testiranja, koja ce biti mucna i dugotrajna. Ako za netrivijalni program dobijem dobre komparativne rezultate bicu zadovoljan.

Pozdrav.
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 622
*.dynamic.sbb.co.yu.



+7 Profil

icon Re: MC9S08, arhitektura, performanse, programiranje i razvojni alati14.01.2008. u 16:54 - pre 198 meseci
Idemo dalje (za one koji prate),

Sada je aktuelna optimizacija prevoda. Za sada je od toga uradjeno to da se prevod izraza vrsi sa minimalnim brojem medjurezultata. Kako se medjurezultati cuvaju na steku, ova optimizacija stedi stek, ali i ubrzava izvrsenje koda. Postoje jos mnoge optimizacije koje mi nisu bas bliske. Na El. fak. u Nisu postoji predmet koji se bavi prevodiocima, ali sve je to suva teorija, a uz to i prilicno bajata iz vremena FORTRAN-a.

Sta mislite, ima li svrhe praviti optimizaciju za ovako nesto:

a := 1;
if a = 0 then
begin //nikada se ne izvrsava
..
end;

ili

a := b;
b := a;

Sve ovo je ocigledno onom ko pise program, pa ako zeli da tako ostane, neka mu. Nemam dobru literaturu za optimizacije ovog tipa, a one se odnose na grupu iskaza, sto mi pravi problem. Ova optimizacija se radi na nivou medjukoda, sto zelim da izbegnem (jer, izgleda ne umem ni da iskoristim) Ako je neko naisao na neku zgodnu literaturu koja obradjuje probleme optimizacije neka me uputi.

Inace mi ostaje samo da napravim moguce optimizacije na nivou izvrsnog koda (vezano za skokove, iste uzastopne naredbe..).

Hvala na eventualnim sugestijama.

Pozdrav.


 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: MC9S08, arhitektura, performanse, programiranje i razvojni alati

Strane: < .. 1 2 3

[ Pregleda: 11131 | Odgovora: 46 ] > FB > Twit

Postavi temu Odgovori

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