 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
lostid Član

Pridružen-a: Tor 30 Sep 2008 17:23 Prispevkov: 234 Aktiv.: 1.15 Kraj: Ljubljana-rudnik
|
Objavljeno: Pon Sep 07, 2009 7:43 pm Naslov sporočila: |
|
|
Zakaj pa z assemblerjem? Sintaksa je popolnoma drugačna, pa še prepričan sem da bi me čisto zamorilo če bi začel z assemblerjem |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Pon Sep 07, 2009 11:38 pm Naslov sporočila: |
|
|
Lagrange je napisal/a: |
Še vedno velja, da je treba začeti z asm, nato preklopiti na c. Šele potem bi predlagal c++. |
Zakaj že??? |
|
Nazaj na vrh |
|
 |
LinuxFuter Član

Pridružen-a: Pon 18 Jun 2007 14:40 Prispevkov: 389 Aktiv.: 1.78 Kraj: Novo mesto
|
Objavljeno: Tor Sep 08, 2009 5:44 pm Naslov sporočila: |
|
|
Nekateri trdijo da se tako navadiš na varčevanje z pomnilnikom ter, da se navadiš na optimizacijo kode  |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Tor Sep 08, 2009 7:41 pm Naslov sporočila: |
|
|
LinuxFuter je napisal/a: |
Nekateri trdijo da se tako navadiš na varčevanje z pomnilnikom ter, da se navadiš na optimizacijo kode  |
Ahh...
Zbirnik je nizko nivojski programski jezik in nima veliko skupnega s c-jem.
Dober c prevajalnik bo ponavadi bolje optimiziral kodo kot, če bi jo ti napisal v zbirniku. To sicer ponavadi ne velja za 8 bitna ampak za 16 in predvsem 32 bitna CPU jedra.
Osnove binarne aritmetike ti morajo biti v vseh primerih zelo jasne!
Mnemonik ni živlenski! C pa je standard! Ko ga enkrat obladaš ti ni potrebno več razmišljati na nivoju mnemonika. Vse kar rabiš na nivoju določenega mnemonika v c-ju, spraviš le enkrat (za vedno) v makro-je.
LP GJ
Nazadnje urejal/a GJ Sre Sep 09, 2009 1:46 am; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Tor Sep 08, 2009 8:53 pm Naslov sporočila: |
|
|
Mnemonik.
Da ne bo zadeva prerasla v neko vojno o asemblerju, raje odpremo novo
Kot sem zastopil avtorja te teme, je prvotno namenjena aplikativnemu programiranju. Za pisanje aplikacij, je učenje asemblerja seveda nesmiselno. Smiselno pa je strukturirano, objektno programiranje, čim manj oz. nič posegov v sistem na katerem aplikacija teče. Če je slednje vseeno potrebno (recimo, da imamo neko lastno kartico na PCI vodilu) , potem aplikacija komunicira z gonilniki, le-ti pa naprej s sistemom. _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Sre Sep 09, 2009 12:07 am Naslov sporočila: |
|
|
GJ je napisal/a: |
Dober c prevajalnik bo ponavadi bolje optimiziral kodo kot, če bi jo ti napisal v zbirniku. |
Razen seveda ce ves kaj pocnes. Odrasel sem v eri "demo"-tov (na PCih; na drugih arhitekturah so bili pa se malo bolj spektakularni) in nekateri ljudje, ki sem jih spoznal, so bili sposobni v razumno kratkem casu ustvariti stvari, za katere ne bi verjel, da jih je 80386 (iz takratne generacije) sposoben izvajati v razumnem casu.
Ni ga torej programa, ki ga clovek ne bi mogel napisati bolje "pes" (v assemblerju), kakor v visokonivojskem jeziku, ce je le cas na voljo. V idelanem primeru bo optimizator v visokonivojskem jeziku naredil tako ucinkovito kodo, kot jo lahko nekdo napise pes, v vecini primerov bo pa slabsa. Ponavadi sicer ni (zaradi lenobe avtorjev, ne zaradi njihove nesposobnosti), a en zelo dober primer tega, kaj lahko naredi sposoben programer, je bil[a] Galaksija. Bilko Debilko je morda poln penezov in samovsecno preprican, da je enkrat prijel boga za jajca, je pa pac dejstvo, da je en jugoslovan, ki je imel nekaj malega vec casa in nekaj manj penezov kot Bilko, spravil isti Basic v toliko manj ROMa, da je bil zraven prostor se za precej drugih stvari (renderiranje videa s MCUjem itd.). _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Sre Sep 09, 2009 1:36 am Naslov sporočila: |
|
|
Glitch je napisal/a: |
Da ne bo zadeva prerasla v neko vojno o asemblerju, raje odpremo novo  |
Sokrat je napisal/a: |
Ni ga torej programa, ki ga clovek ne bi mogel napisati bolje "pes" (v assemblerju), kakor v visokonivojskem jeziku, ce je le cas na voljo. V idelanem primeru bo optimizator v visokonivojskem jeziku naredil tako ucinkovito kodo, kot jo lahko nekdo napise pes, v vecini primerov bo pa slabsa. |
Ja to velja za 80386 in pa 80486, za novejše modele procesorjev tam nekje od P4 naprej, torej tiste, ki uporabljajo več nivojske predpomnilnike (ne le enega ampak vsaj 3) pa je to preteklost!
V večini primerov bo koda, ki jo napišeš v mnemoniku tekla enako hitro kot, če jo napišeš v višjem nivojskem jeziku in prevedeš s spodobnim prevajalnikom, ki obvlada optimizacijo. Poglej si recimo mnemonik prevedene kode za kašen Borland C++ ali pa Delphi in naredi primerjave. Tudi, če kodo dodatno optimiziraš razlike skoraj ni. Sodobni procesorji so prilagojeni prevajalnikom do te mere, da bo po tvoje optimizirana koda dostikrat delovala počasneje kot, če bi jo prevedel dober prevajalnik. Skratka, pisanje v mnemoniku za visoko zmogljive 32 in več bitne procesorje že dolgo ni več smiselno.
LP GJ |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Sre Sep 09, 2009 8:41 am Naslov sporočila: |
|
|
No, saj ne gre za kaksno vojno ... Ze po definiciji je lahko optimizator samo tako dober, kot so ljudje, ki so ga napisali. Optimizator ne pise programov - ljudje jih pisejo, zato lahko to naredijo vsaj enako dobro, ce ne boljse (ce seveda znajo in imajo na voljo cas). _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Sre Sep 09, 2009 11:36 am Naslov sporočila: |
|
|
Sokrat je napisal/a: |
Ze po definiciji je lahko optimizator samo tako dober, kot so ljudje, ki so ga napisali. Optimizator ne pise programov - ljudje jih pisejo, zato lahko to naredijo vsaj enako dobro, ce ne boljse (ce seveda znajo in imajo na voljo cas). |
Eeee...
Govorimo o smotrnosti, smislu učenja mnemonica in trošenju našega časa/življenja!
LP GJ |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.58
|
Objavljeno: Sre Sep 09, 2009 12:05 pm Naslov sporočila: |
|
|
Casa gre vsekakor precej vec, a nekaterih reci se ne da narediti drugace, kot da vrzes precej casa ob problem.
Spet bi lahko kdo rekel, da je potem bolje vreci ob problem vec racunske moci namesto vec casa in to pri malih mikrokontrolerjih v vecini primerov lahko naredis. Problem je takrat, ko prides do meje, ali zaradi porabe, ali zaradi prostora, ali zaradi (ne)zmogljivosti, ali pa kar zaradi cene v masovni proizvodnji (kjer tisti vlozeni dodatni cas lahko odplacas s prihrankom).
Smotrnost ... o tem bi se pa se dalo razpravljati - npr. pozitivni ucinki spoznavanja arhitekture preko pisanja na nizkem nivoju; zanimivo je kaj se da potem vcasih doseci, ce se malo poglobis. Moje mnenje je, da bliznje spoznavanje z arhitekturo lahko samo koristi, a to vecina novodoslih "programerjev" zanemarja (zato potem mnoga nesmiselna vprasanja ). Jaz na forumu kar naprej opazam, da o programiranju mikrokontrolerjev tisti, ki zacnejo "pri temeljih", prakticno izkljucno dajejo odgovore (npr. Silvo), tisti, ki pa zacnejo nekje "v zraku", pa izkljucno sprasujejo. Napaka v pristopu torej ... _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
Umnik Član

Pridružen-a: Čet 16 Sep 2004 17:52 Prispevkov: 958 Aktiv.: 4.04 Kraj: Novo mesto
|
Objavljeno: Sre Sep 09, 2009 12:23 pm Naslov sporočila: |
|
|
Sedaj ko smo dobili novo temo, lahko še jaz napišem svoje kratko in jedrnato mnenje.
Bolj kot si dober v Cju, bolj potrebuješ znanje asemblerja. Ker ko se gre za performanse, gledaš, kako boš napisal sleherno spremenljivko, vrstico, zanko ali rutino. Gledaš, kaj je compiler naredil s tisto zanko in kaj je compiler z optimizacijo naredil s tisto zanko. In da veš in znaš presodit kaj je dobro, kaj slabo in kaj sprejemljivo, potrebuješ asembler.
Dandanašnji softwer je slabo napisan zaradi slabih programerjev ali pa časa do tržišča. |
|
Nazaj na vrh |
|
 |
Glitch Član

Pridružen-a: Pet 07 Apr 2006 11:40 Prispevkov: 1477 Aktiv.: 6.32
|
Objavljeno: Sre Sep 09, 2009 12:37 pm Naslov sporočila: |
|
|
Sokrat je napisal/a: |
naprej opazam, da o programiranju mikrokontrolerjev tisti, ki zacnejo "pri temeljih", prakticno izkljucno dajejo odgovore (npr. Silvo), tisti, ki pa zacnejo nekje "v zraku", pa izkljucno sprasujejo. Napaka v pristopu torej ... |
Hm... ne vem no. Če že omenjamo osebe. Silvo ima precej izkušenj in praktično nima kaj vprašat.
Ostali, so pa večinoma popolni začetniki na določenem področju in vprašanja so nastala skoraj izključno zaradi lenobe.
Potem je tu še kompleksnost sistemov in namen uporabe. Mislim, da je treba najprej to razčistit. Vse se je začelo mešat v tej temi.
Recimo, današnji sw teče na izredno kompleksnih sistemih.
Večina embedded aplikacij teče na srednje in manj kompleksnih sistemih na katerih teče Linux, WinCE, klasični RTOS ali mogoče celo brez.
Enostavni sistemi nimajo oz. komaj da imajo vsaj nekaj pomnilnika. Sem spadajo razne 6 oz. 8 pinske mravlje
Zo je za začetek.
Dodal bi še konec: brez asemblerja še vedno ne gre, pa čeprav ga potrebuje le kakšen promil promila programerjev.
Sedaj se pa razpišimo kaj in kako je vmes!!! _________________ Answers: $1, Short: $5, Correct: $25, dumb looks are still free. |
|
Nazaj na vrh |
|
 |
GJ Član


Pridružen-a: Čet 02 Nov 2006 15:51 Prispevkov: 946 Aktiv.: 4.17 Kraj: Ljubljana
|
Objavljeno: Sre Sep 09, 2009 5:28 pm Naslov sporočila: |
|
|
Sokrat je napisal/a: |
Casa gre vsekakor precej vec, a nekaterih reci se ne da narediti drugace, kot da vrzes precej casa ob problem. |
Ker drugače ne znaš!
Sokrat je napisal/a: |
Spet bi lahko kdo rekel, da je potem bolje vreci ob problem vec racunske moci namesto vec casa in to pri malih mikrokontrolerjih v vecini primerov lahko naredis. Problem je takrat, ko prides do meje, ali zaradi porabe, ali zaradi prostora, ali zaradi (ne)zmogljivosti, ali pa kar zaradi cene v masovni proizvodnji (kjer tisti vlozeni dodatni cas lahko odplacas s prihrankom). |
Tema ni nastala zaradi malih mikrokontrolerjev.
Ja za male mikrokontrolerje je programiranje v mnemonicu primernejše.
Če pa se piše kaj več od 64K bytov dolžine, se to počne izključno v C-ju.
Če si si ogledal kako je sestavljen nek ANSI c prevajalnik boš videl, da v ozadju kliče mnemonic (makrote). Torej še enkrat. Določena rutina se v mnemoniku napiše le enkrat, potem pa jo kličeš v C-ju. In to je edini pravi pristop, vse ostalo je nepravilno oziroma izgubljanje časa.
Vsak 'low-level' programer zna tudi mnemonik in zelo dobro ve kako njegov C prevajalnik deluje.
Sokrat je napisal/a: |
Smotrnost ... o tem bi se pa se dalo razpravljati - npr. pozitivni ucinki spoznavanja arhitekture preko pisanja na nizkem nivoju; zanimivo je kaj se da potem vcasih doseci, ce se malo poglobis. Moje mnenje je, da bliznje spoznavanje z arhitekturo lahko samo koristi, |
Vedno je potrebno vedeti kaj programiraš...
Vendar na 32 bitnih velikanih je mnemonic level nekaj povsem drugega kot na 8 bitnih mlinčkih, če že ne zaradi arhitekture potem pa zaradi API-ja, ki stoji v ozadju.
LP GJ
Nazadnje urejal/a GJ Sre Sep 09, 2009 8:37 pm; skupaj popravljeno 1 krat |
|
Nazaj na vrh |
|
 |
domen_puncer Član

Pridružen-a: Čet 01 Maj 2008 13:30 Prispevkov: 78 Aktiv.: 0.37 Kraj: Ljubljana, Mozirje
|
Objavljeno: Sre Sep 09, 2009 6:54 pm Naslov sporočila: |
|
|
Par razlogov zakaj asm:
1. Spoznas delovanje racunalnika (v C so velik problem za zacetnike kazalci, v asm moras to razumet ali pa ne bos napisal niti enega programa) in tudi arhitekture.
2. Nekatere stvari morajo biti hitre. Npr. racunanje checksuma ethernet paketov - realen primer izpred par mesecev. Take stvari skompajlas, vzames vmesen asm, in ga na roke zoptimiras.
3. Low level stvari - bootup, implementacije semaforjev, sleep itd.
4. Ker ti je cool, pa si mogoce malo mazohista
O vseh govorim iz lastnih izkusenj, v nasprotju z nekaterimi, ki teoretizirate  _________________ Tiskanje sudoku |
|
Nazaj na vrh |
|
 |
Lagrange Član

Pridružen-a: Pet 10 Okt 2003 10:07 Prispevkov: 164 Aktiv.: 0.69 Kraj: Ljubljana
|
Objavljeno: Sre Sep 09, 2009 7:30 pm Naslov sporočila: |
|
|
C je abstrakcijska plast. Kdor zeli razumeti kako mlincek v resnici deluje mora razumeti asm. Kako dobro prevajalnik opravi delo, je odvisno tudi od tega kako dobro je spisana koda. Realnost je, da tisto kar deluje elegantno in optimalno v c, ni nujno tako blescece z vidika cpu. Skratka ce ne gledas prevajalniku pod prste lahko namesa kaj precej cudnega.
Nekateri prevajalniki npr. razlikujejo, ce klices vrednost iz neke tabele s sintakso array[i] ali pa direktno s pointerji. Razlika postane nemarno naporna pri kakem filtriranju. Naceloma nas ucijo, da naj bi bila zapisa enakovredna. Pa nista. In podobno velja se cel kup drugih reci.
Za programiranje novoletnih luck na 32bitnem armu, tako temeljno znanje seveda ni potrebno. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|