assembler

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Zpráva
Autor
Uživatelský avatar
ntamara
Příspěvky: 2
Registrován: 20 led 2010, 00:00

assembler

#1 Příspěvek 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ěď.
Uživatelský avatar
mikollar
Příspěvky: 1477
Registrován: 26 pro 2004, 00:00
Bydliště: Košice - okolie

#2 Příspěvek od mikollar »

ak pochopis assembler budes pri C dokonale rozumiet co kde ako vyuzivas a budes to vediet efektivnejsie pouzit
Uživatelský avatar
forbidden
Příspěvky: 9442
Registrován: 14 úno 2005, 00:00
Bydliště: Brno (JN89GF)
Kontaktovat uživatele:

#3 Příspěvek 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.
Uživatelský avatar
Zmije
Příspěvky: 1691
Registrován: 30 čer 2005, 00:00
Bydliště: Pardubický kraj

#4 Příspěvek 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í.
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#5 Příspěvek 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.
Naposledy upravil(a) mtajovsky dne 22 led 2010, 21:19, celkem upraveno 1 x.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#6 Příspěvek 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?
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#7 Příspěvek 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.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#8 Příspěvek 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?
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#9 Příspěvek od mtajovsky »

Klidně se ptejte na co chcete.
Uživatelský avatar
rnbw
Příspěvky: 37419
Registrován: 21 bře 2006, 00:00
Bydliště: Bratislava

#10 Příspěvek 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.
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#11 Příspěvek 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 :rit: .
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#12 Příspěvek od Andrea »

Se stydim :oops: Sice víc jak 15 let programuju v assembleru, ale co obnáší substr() fakt netuším :oops: Ale zase je pravda, že bych to nikdy nepoužila, páč taková instrukce v assembleru neni :wink:
Uživatelský avatar
rnbw
Příspěvky: 37419
Registrován: 21 bře 2006, 00:00
Bydliště: Bratislava

#13 Příspěvek od rnbw »

Keby som videl kod tych hroznych veci, s ktorymi sa stretavam, tak by to asi na mne zanechalo trvale nasledky... :roll:
Uživatelský avatar
mtajovsky
Příspěvky: 3728
Registrován: 19 zář 2007, 00:00
Bydliště: Praha

#14 Příspěvek 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. "; :D
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#15 Příspěvek 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 :ponder:
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“