Kezdőoldal » Számítástechnika » Programozás » Mennyire nehéz az Assembly?...

Mennyire nehéz az Assembly? Megéri tanulni?

Figyelt kérdés

Csak hallottam róla, hogy nagyon régi nyelv, de a mai napig használják, és hasznos is, mert egészen kis helyet foglal, ezért a firmware-k alapja. És hogy hardveresen lehet vele programozni, ami szintén hasznos szerintem, mondjuk nem tudom, hogy C++ vagy Java-val mennyire lehet hardveresen programozni.


Néztem pár tutorialt és... hát eléggé más :D Nektek mi a véleményetek? Érdemes foglalkozni vele?



2014. júl. 18. 19:48
1 2
 1/19 anonim ***** válasza:

Attól függ mit akarsz programozni. Ahol én dolgozom ott egy különleges C forrásnyelvet használunk , de mellette nézzük az gépi kódot is. A gépi kód nagyon ráépül a hw-re, pl én nem tudnék hirtelen PCre assembly programot írni.


Ez áldás és átok is egyben :)

2014. júl. 18. 20:03
Hasznos számodra ez a válasz?
 2/19 anonim ***** válasza:
100%
Ha konkrét célod van vele, akkor érdemes megtanulni, de amúgy csak érdekességnek jó (hasznos ilyet is látni, hogy régen, hogy ment - mert hát egy Hello Worldot megírni/megérteni nem 5 perc, mint a magasabb szintű nyelveknél).
2014. júl. 18. 20:04
Hasznos számodra ez a válasz?
 3/19 A kérdező kommentje:
szóval ma már nem nagyon használják? Még a drivereknél sem?
2014. júl. 18. 20:05
 4/19 A kérdező kommentje:
vagy akik ilyen elektromos eszköz programozásában dolgoznak, pl kórházi gépek?
2014. júl. 18. 20:06
 5/19 anonim ***** válasza:

Van olyan hely, ahol használják:

Elektronikai eszközök PIC-jének programozására, bár erre van c-s alternatíva

-operációs rendszerek olyan részeinél, ahol azt nem lehet másképpen interpretálni, pl boot managerek hasonlók

-drivereknél van c-s alternatíva mind windows-on, mind pedig linuxon, sőt windowson van egy egész Toolkit rá, ami megkönnyíti ezt a problémát, nem kell assamblyben szenvedni, bár igen a toolkit biztos tartalmaz assambly rutinokat, de ezzel a programozónak nem minden esetben kell vesződnie

-Firmware-eknél, nos ott elképzelhető, hogy használnak assamblyt, bár simán kinézem, hogy már van előre elkészített függvénykönyvtár c-ben, ami persze megint tartalmaz assambly rutinokat

-Viszont programok komolyabb szintű debuggolásához nem árt tudni ezt a programnyelvet, legalább felületesen (regiszterek, alapvető utasítások stb) ugyanis mindez ebben a programnyelvben történik

-Akik crackeket írnak játékokhoz, azok tuti ismerik ezt a nyelvet, hogy legalább valamilyen szinten olvasni tudják a kódot( nem azt mondtam, hogy konkrétan értik is A-Z-ig, de elbarangolnak benne, és meg tudják keresni a szükséges részeket, és módosítani is tudják azt, hogy ne kelljen cd hozzá

-Akkor igen speciális példa a programok "feltörése" azaz a hackelés: ennek az a célja, hogy támadó a saját programkódját futtassa le célprogramon belül. Azaz mondok egy nagyon jó példát. Tegyük fel valaki fel akar törni egy szervert. Ezen tudja, hogy valamilyen apache szerver fut rendszergazdai jogokkal. Ha a támadó le tud futtatni a rendszergazdai jogokkal futó processzen belül egy saját kódot( pl. a parancssorhoz való hozzáférés lehetőségét megteremteni, mert akkor már alapból mindenhez hozzáférne)

Ehhez ha éppen nincs nyílvános exploit(így hívják a programot ami lehetővé teszi). Akkor neki állhat( ha ért az assamblyhez és van kitartása) saját exploitot írni. Nagy nehezen talál egy hibát, amihez az apache szervert debuggerben kell futtatnia, és itt megint nem árt az assamlby ismerete) Ezután előveszi a c nyelvet és ír hozzá egy exploitot, és lefuttatja a a saját kódját, és volálá fel van törve a szerver( ez nagyon primitív példa, és persze ez lehet több hónapos munka is)

2014. júl. 18. 20:22
Hasznos számodra ez a válasz?
 6/19 tabaki ***** válasza:
50%

Szerintem nem nehéz, mondom úgy, hogy sohasem tudtam igazán programozni. Viszont a DOS-os időkben sokat szórakoztam assemblyvel, éppen a kis mérete meg a hatékonysága miatt. Arra készülj azonban, hogy adott esetben egészen egyszerű programfordulatokat is több száz apró lépésre kell lebontanod, és minden hibádnak meglesz a következménye, mert a fordító nem csap a kezedre a hülyeségeknél -- de mindez egyben vonzó tulajdonsága is. A magas szintű nyelvek általában lehetővé teszik assembly-rutinok beépítését, tehát megteheted, hogy a kevésbé kényes részeket a kényelmesebb magas szintű nyelven programozd, a keményebb részében assemblyt használj. Ahol fontos a platformfüggetlenség, ott tudomásom szerint nem is érdemes a tiszta assemblyt erőltetni. A rendszerhez igazodó címzéseket, rendszerhívásokat és efféléket intézze csak el az arra megírt magas szintű nyelv, az azoktól független varázslásokat lehet csak az assemblyre bízni. Egy-egy meghatározott hardver programozásával nyilván más a helyzet.

Az is legyen világos előtted, hogy "az" assembly nem egyetlen nyelv, hanem mindig a megcélzott processzor utasításkészletétől függ.

Bocs, ha esetleg hülyeségekkel traktáltalak, majd kijavít, aki ért is hozzá.

2014. júl. 18. 20:25
Hasznos számodra ez a válasz?
 7/19 SimkoL ***** válasza:

Vannak hatalmas előnyei és hátrányai. pl. 20 byte a hello world :), ebből is látszik, hogy minimális a memória foglalás. Kevés utasításkészlet ami lehet előny vagy hátrány is. Régen kevés dolgot írtunk meg asm-ben, de pl. lehetett figyelni a sorvisszafutást és akkor írtál, rajzoltál és nem volt villódzás a monitoron. Sok kis apróságra jó, nagy dolgokat nem érdemes csinálni, mert egyszerűsége miatt hosszú a forráskód és mint majom a házicérnába...

Ma már szerintem kevesen értenek hozzá profi módon, de szerintem, mivel 'szívhez szóló' kódot lehet készíteni érdemes vele foglalkozni. Az elején nehéz :)

2014. júl. 18. 20:55
Hasznos számodra ez a válasz?
 8/19 A kérdező kommentje:
köszi a válaszok, most éppen a Java tanulásával küzdök, de ez is érdekes számomra, persze felérne egy fejbelövéssel ha most nekiállnék azt is tanulni :D Meg az egyik tanárom mesélte, hogy ő az egyetemen tanulta pl, meg is lepődtem hogy tanítanak még ilyet. Mondjuk szabadon választható volt, de ha indult belőle oktatás akkor gondolom sokan mások is választották.
2014. júl. 18. 21:42
 9/19 SimkoL ***** válasza:
0%
A Java után az assembly láblógatva megvan :)
2014. júl. 18. 21:51
Hasznos számodra ez a válasz?
 10/19 iostream ***** válasza:
100%

"A Java után az assembly láblógatva megvan :)"


Aszta. Persze, beseggelni többet kell Javaban (brutális nagy könyvtár), de azért ez így erős volt akkor is. Az assemblyhez nem elég ismerni az utasításkészletet, a hardver és az oprendszer minden nyűgjét is kenni kell.

2014. júl. 18. 21:57
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!