Stránka 4 z 5

Napsal: 21 kvě 2008, 09:19
od mihal
Assembler je posvetny zaklad vsetkeho, co chce bezat na procesore :!:
Je to predsa pre cloveka prepisany strojovy kod. Takze programovanie v assembleri mimo to ze je najefektivnejsie co sa tyka rychlosti kodu a jeho velkosti urcite programovanie je. Programovat sa ale da aj priamo v strojovom kode. Takze k assembleru a stroj.kodu len s uctou prosim.

Napsal: 21 kvě 2008, 09:29
od rnbw
To nemusi platit. Optimalizacia v kompilatore C moze vygenerovat lepsi kod ako ked ho niekto napise rucne (a zle).

Napsal: 21 kvě 2008, 09:50
od mihal
Predpoklad je program bez chyby. Kompilator C je postaveny univerzalne, musi zvladat mnozstvo situacii v kode a ked zacne optimalizovat... stalo sa mi uz ze sa odstranili niektore pre kompilator s optimalizaciou nezaujimave casti kodu - pre mna klucove, a nezalezi ci islo o rychlost alebo kod. Testoval som kompilatory C hew od renesasu, crossworks, iar, code warrior a ziadny sa nedostal nissie ako 1.15 nasobku kodu proti asm pri zachovani funkcnosti.
Takze asm kod je v tomto vzdy lepsi - ak je bez chyb. Iba ten cas straveny nad asm :? vyvoj v C je podstatne jednoduchsi.

Napsal: 21 kvě 2008, 10:44
od Andrea
Přítel několik hodin hledal chybu proč mu nefunguje program v C na ARMu. Našel ji až po prozkoumání přeloženého kódu na úrovni assembleru. Překladač (gcc) byl při optimalizaci tak "geniální", že klidně přeházel pořadí příkazů a to aniž by tím něco ušetřil, naopak, v assembleru se ona část kódu (8 instrukcí) dala napsat o dvě instrukce kratší a hlavně funkční. Takže asi tak k té optimálnosti C.
A správně se má říkat "jazyk assembleru" anglicky "assembly language". Ale myslím, že to většina pochopí, když se řekne psát v assembleru.

To mtajovsky: Já zase nepředpokládám, že Vaše dcery programují v (jazyce) assembleru, každá jsme holt nějaká :)

P.S.: Tu moji minulou narážku o studentech zřejmě nikdo nepochopil, asi jsem to nenapsala dost jasně pro většinovou část zdejšího osazenstva :lol: :wink:

Napsal: 21 kvě 2008, 14:43
od Martin_
A to "přítel" nezná direktivu _volatile_ ??? Asi ne ...

Napsal: 21 kvě 2008, 18:25
od mtajovsky
Andrea píše:Přítel několik hodin hledal chybu proč mu nefunguje program v C na ARMu. Našel ji až po prozkoumání přeloženého kódu na úrovni assembleru. Překladač (gcc) byl při optimalizaci tak "geniální", že klidně přeházel pořadí příkazů a to aniž by tím něco ušetřil, naopak, v assembleru se ona část kódu (8 instrukcí) dala napsat o dvě instrukce kratší a hlavně funkční. Takže asi tak k té optimálnosti C.


Co to dokazuje?
1] že gcc je ne nadarmo zadarmo a darovanému koni na zuby nehleď. Zejmena když malá (embeded) řešení nejsou zrova domovskou doménou pro gcc.

2] Že se opravdu "vyplatí" se párat s assemblerem, když mi ušetří 25% délky kódu. To je tedy zisk. Ještě by bylo dobré říci, kolik času programování v C oproti assembleru příteli ušetřilo na celé aplikaci. Že ztratil několik hodin na ojedinělém problému již víme.

3] Přeházením pořadí příkazů kompilátor něco získá, a to na rychlosti. Záleží na architektuře. Ovšem každý program může mít chybu, i gcc, že? To ovšem nedokazuje, že babrat se za každou cenu s assemblerem je produktivní.

Mě jako programátora dnes vůbec nezajímá, jestli má aplikace 200 nebo 400 kB. Ale zatraceně mě zajímá, kdy dostanu zaplaceno a jestli mi kšeft nepřebere někdo jiný, protože má kratší termíny. V céčku je napsán téměř celý Unix (Linux). To bych chtěl vidět, kdo by ho psal v asm.

Napsal: 21 kvě 2008, 18:45
od Andrea
mtajovsky píše:Co to dokazuje?

Že máte úplnou pravdu. Jdu si sehnat visualjavu++, jednočipy budou chrochtat blahem :?

Napsal: 21 kvě 2008, 22:47
od mtajovsky
Ale to je, Andreo, trošičku pod pás.

Jednak nemám ve všem a úplnou pravdu, to byste mi opravdu, ale opravdu křivdila :D .

Druhak je otázka, jaký jednočip bude chrochtat. Víte, že Java byla původně vyvinuta na programování mikrořadičů v bílé technice a jiných "jednočipových" aplikacích? Co jednočipy v Java telefonech? Co Java čipové karty?

To až osvojení jejích dobrých objektových vlastností programátory "velkých" aplikací vedlo k prudkému rozvoji různých knihoven a frameworků a hlavně vzniku "velké" Javy J2EE, takže se tvrdě prosadila v business aplikacích a dnes na ní běží bankovní systémy a obchodování nadnárodních korporací.

Jestli byste chtěla zkusit programovat v Java, tak si nepořizujte žádné Visual-něco, ale doporučuji free produkt Eclipse. :prst:

Napsal: 22 kvě 2008, 09:51
od piitr
Naprostý souhlas s mtajovsky. Do puntíku. Jen doplním jednu věc. V mnoha případech je i pro jednočipy mnohem lepší Java než assembler (proto taky vznikla). Jde o případy, kdy je aplikace již trochu složitější - má více stavů, více procesů, funkcí. Tehdy je už hodně znát, že v Javě se nenapáchá tolik chyb a program nepadá. A to je právě u embedded aplikací opravdu hodně důležité. Když mi jednou za měsíc spadne Paintbrush, tak ho holt spustím znova. Když mi jednou měsíčně bude padat lednička, topení atd., tak to ponesu hůř.

Napsal: 22 kvě 2008, 10:46
od Andrea
To piitr a mtajovsky: Nefér je to od vás dvou, protože jste díky počtu v psychologické převaze. Takže já si budu dál programovat v assembleru vy si také programujte v tom co vám vyhovujte a nehodnotťe něco o čem nic nevíte. Moje aplikace v assembleru nepadají, což se třeba o sw v mém mobilu za 10tis. říct nedá, autorovi který ten sw napsal (v javě) bych nejradši rozkopla úsměv. Ale určitě to měl napsaný rychle a přehledně. A že padá Paintbrush? To asi nebude tim, že by byl napsanej v assembleru, to už se přece dávno nenosí. :?

Napsal: 22 kvě 2008, 10:53
od piitr
Co se na to dá říct? Napadlo mě jen tohle: Co se na to dá říct? Napadlo mě jen tohle: Co se na to dá říct? Napadlo mě jen tohle: Co se na to dá říct? Napadlo mě jen tohle: ...

Napsal: 22 kvě 2008, 11:07
od mtajovsky
Andrea << dobrá, zakopáme válečnou sekyru. Jen bych se ohradil proti tomu, že o programování v asm nic nevím. Programováním v asm jsem se živil 10 let. Od minipočítačů až k 8051. 8-)

Napsal: 22 kvě 2008, 11:30
od Andrea
mtajovsky píše:Andrea << dobrá, zakopáme válečnou sekyru. Jen bych se ohradil proti tomu, že o programování v asm nic nevím. Programováním v asm jsem se živil 10 let. Od minipočítačů až k 8051. 8-)

Měla jsem na mysli, že nevíte nic o tom jak já programuju v assembleru.

Napsal: 22 kvě 2008, 19:30
od FERYACT
Zdá se že je možno se vrátit k původnímu tematu.Padla zmínka proč na PIN5
je přesný odpor 1%. 1C1 je multivibrátor /20k+2k+C7/.Odpory jsou v poměru 1/10 což je správné.K C7 se připojuje vnější kondík a ladí.
Chceme li dosáhnout stálého poměru odporů musíme použít přesných a tím pádem stabilních odporů

Napsal: 22 kvě 2008, 20:26
od ZdenekHQ
No, technický cit mě říkal, že u CMOS je poměr 1/10 úplně stejnej jako 1/30...

Nicméně jsem to zapojil,jako RA použil potenciometr 25K, jako RB 2k2, jako C7 1N a změřil. Při snižování RA do hodnoty RA=5K se prakticky nic nedělo (změna kmitočtu do 10%), pak už byl oscilátor trošku nestabilní, ale kmital (trošku nesmyslně) i s RA=0. Tu nestabilitu přičítám hlavně kapacitě vstupu hradla.

Poměr RA/RB/C7 se srovná kalibrací, tudíž stále si dovoluji popřít význam 1% odporů. Spíš bych se přikláněl k použití teplotně nezávislých odporů, byť s tolerancí 20%. Stejně tak je sebevražda dát jako C7 keramiku.