Stránka 1 z 2
assembler
Napsal: 21 led 2010, 21:54
od ntamara
Dobrý den.V programování mikrokontrolérů( PIC,ATMEL) jsem začátečník a tak bych potřeboval poradit jestli je výhodnější učit se assembler nebo vyšší programovací jazyk(Pascal,C).Jaká cesta je pro začátečníka jednodušší.Někdo tvrdí ,že programování v C je jednodušší a že nemá smysl učit se assembler,nekdo zase naopak.Jak to tedy je.
Děkuji za odpověď.
Napsal: 21 led 2010, 22:00
od mikollar
ak pochopis assembler budes pri C dokonale rozumiet co kde ako vyuzivas a budes to vediet efektivnejsie pouzit
Napsal: 21 led 2010, 22:00
od forbidden
Základy assembleru bys měl znát, i když budeš programovat v nějakým vyšším jazyku. Základy se naučíš za týden, to tak moc času není, abys to tomu nemohl věnovat. Navíc, když budeš chtít využít schopnosti mcu naplno, nic jinýho, než optimalizovaný assembler ti nepomůže.
Napsal: 22 led 2010, 00:52
od Zmije
Ve škole do nás nejprve hustili pascal, potom c a nakonec asm, dnes bych řekl, že to měli vzít přesně naopak a na pascal se uplně vykašlat. Jak pracují pointry, přerušení, volání podprogramů jsem pochopil až v asm, proto doporučuji jím začít, vpodstatě stačí pochopit práci s pamětí, zásobníkem, podprogramy a přerušení.
Napsal: 22 led 2010, 21:15
od mtajovsky
Zmije << mohu potvrdit. Sám jsem začínal s asm na minipočítačích a mikrech, pak C/C++ a dnes Java a .NET. Jeden můj kolega řekl, že kdo nikdy neprogramoval v asm, tak vlastně neví, co se v počítači děje.
Napsal: 22 led 2010, 21:17
od Andrea
mtajovsky píše:...kdo nikdy neprogramoval v asm, tak vlastně neví, co se v počítači děje.
A to je v Javě potřeba?
Napsal: 22 led 2010, 21:24
od mtajovsky
Andrea píše:mtajovsky píše:...kdo nikdy neprogramoval v asm, tak vlastně neví, co se v počítači děje.
A to je v Javě potřeba?
A to jsem řekl? Nicméně odpověď je - je to ku prospěchu. A v C velmi ku prospěchu.
Napsal: 22 led 2010, 21:31
od Andrea
mtajovsky píše:Andrea píše:A to je v Javě potřeba?
A to jsem řekl?
To už se smím ptát jen na to, co někdo řekl?
Napsal: 22 led 2010, 21:38
od mtajovsky
Klidně se ptejte na co chcete.
Napsal: 22 led 2010, 21:43
od rnbw
Java programatori spravidla vobec nevedia, co ich program v skutocnosti robi. Preto nemaju problem napisat nejaku prasacinu typu "vyberiem z databazy niekolko tisic poloziek a urobim z nich objekty". Potom su trivialne programy pomale na x GHz CPU a y GB RAM.
Napsal: 22 led 2010, 22:00
od mtajovsky
No to je právě ono. Zrovna dnes se mi dostal do ruky kousek kódu v Javě, který jsme zdědili po nějakých Indech. Má prohledávat string a nahrazovat Escape sekvence. No a na každý takový výskyt tam byl substr(), což znamená opětovné přidělování paměti. A přitom naprosto zbytečně. Až mě to bolelo za ty servery. To by člověk, který programoval v asm, nikdy neudělal, protože ví, co to obnáší. A to pak takhle napsaná aplikce musí běžet v clusteru ze 60 serverů a výkon je stejně v

.
Napsal: 22 led 2010, 22:05
od Andrea
Se stydim

Sice víc jak 15 let programuju v assembleru, ale co obnáší substr() fakt netuším

Ale zase je pravda, že bych to nikdy nepoužila, páč taková instrukce v assembleru neni

Napsal: 22 led 2010, 22:10
od rnbw
Keby som videl kod tych hroznych veci, s ktorymi sa stretavam, tak by to asi na mne zanechalo trvale nasledky...

Napsal: 22 led 2010, 22:11
od mtajovsky
Andrea << "Z toho si nic nedělejte, jsou jiní, kteří 15 let používají v Javě substr() a zase netuší co je to assembler. ";

Napsal: 22 led 2010, 22:16
od Andrea
To bude určitě něco podobnýho tomuhle
Kód: Vybrat vše
;------------------------------------------------------------------------------
; Duplikace stringu
; V EAX vraci adresu duplikatu nebo 0 pri chybe
;------------------------------------------------------------------------------
PUBLIC StrDup
StrDup PROC pStr:DWORD
push ECX
push ESI
push EDI
call StrLen, pStr
push EAX
call LocalAlloc, LMEM_FIXED, EAX; Alokuje pamet na cilovy string
pop ECX ; ECX = delka stringu
or EAX,EAX
jz lo_err
mov EDI,EAX ; EDI = adresa ciloveho stringu
mov ESI,pStr ; ESI = adresa zdrojoveho stringu
rep movsb ; Zkopiruje string
lo_ret: pop EDI
pop ESI
pop ECX
ret
lo_err: xor EAX,EAX
jmp lo_ret
StrDup ENDP
ale nebude se kopírovat celej string
