Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Sve sto ste zeleli da znate o assembleru a niste smeli da pitate

[es] :: Asembler :: Sve sto ste zeleli da znate o assembleru a niste smeli da pitate

[ Pregleda: 3365 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

smrak
Beograd

Član broj: 110394
Poruke: 38
194.247.208.*



Profil

icon Sve sto ste zeleli da znate o assembleru a niste smeli da pitate04.05.2007. u 14:41 - pre 206 meseci
Vec nekoliko (vise od 10) godina se bavim racunarima i uvek su me privlacili i na neki nacin mogu da kazem da sam i razumeo i sisteme i programiranje i multimediju itd. Ali uvek je za mene trag misterije ostavljao taj assembler. Dakle pokusavao sam da sedne i zagrejem stolicu da ga naucim i ucim i ucim ali su se uvek neke obaveze i neretko besmislene stvari isprecavale (najvise sam dogurao do neke 7-8 strane u knjizi). Pa me zanimaju neke stvari o assembleru koji na koji iskreno ne znam ko moze da mi da odgovor (nadam se vi).

Prvo sta assembler tacno razlikuje od drugih programskh jezika. Mislim znam od prilike ali objasnite konkretno sta mu daje prednosti koje su mane sta ga distancira od masinskog jezika. Koji se assembler kada koristi u zavisnosti od platforme (Windows Linux) ili u zavisnosti od hardvera (Intel AMD) u cemu je tu razlika.

Video sam neke linkove za OS-ove koji su napravljeni potpuno u assembleru koji se tu asm koristio prepostavljam da to nema veze sa Windowsom, Linuxom.

Koje su stvarne mogucnosti assemblera u smislu bezbednosti. Kako funkcionise to hackovanje virusi i ostale stvari. Kako se radi reverse engineering. Npr jer moze svaki fajl da se otvori i da se sa njim radi ili samo neki ili sta? Kod standardnih programskih jezika je toj samo source jer tako? Koliko stete stvarno moze da se nanese i kako se od toga odbraniti (mislim logicnim razmisljanjem mi je nekako assemler lower level od OSa tako da bi u tom smislu lako mogao smisliti nacine da ih napadnem)?

Jer assebler moze da se koristi (znam da se koristi ali na koj nacin) za programiranje drugih racunarskih uredjaja mreznih multimedijalnih itd kako sve to funkcionise?

Nekoliko prakticnih pitanja jer sa assemblerom moze da se izvrsi low level format HDD-a mislim onaj zero write? I cemu sluzi i jer ima neke veze u dos-u ona komanda debug -a asseble sa asseblerom i ako ima kako to radi?

Ja se strucnim kolegama izvinjavam jer ova pitanja mora da im zvuce jako glupo ali te stvari me stvarno najvise zanimaju sto se tice racunara a svi koje sam pitao su mi rekli sta ce ti to, to je zastarelo, to niko ne radi, to uopste nije trazeno itd. Mene stvarno zanima kako na ovaj nacin funkcionisu sistemi i znam da je to tesko objasniti nekome ko je pocetnik u svemu tome ali bi vas zamolio da pokusate. Hvala
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.105.*



+7 Profil

icon Re: Sve sto ste zeleli da znate o assembleru a niste smeli da pitate09.05.2007. u 00:01 - pre 206 meseci
Pozdrav
Evo nesto uopsteno iz mog iskustva kao i iz iskustva drugih i razne literature.
Uopsteni rad mikroprocesora:
Centralna procesorska jedinica (CPU) radi u koracima (intervalima) izvrsavajuci jednu po jednu masinsku instrukciju.
Postoji odredjeni set masinskih instrukcija koje procesor poznaje. One se prepoznaju od strane procesora u binarnom obliku kao stanja bitova plus i minus.
Danasnji PC procesori su uglavnom 32 bitni, sto znaci da je podatak (instrukcija) koja dolazi na procesor sastavljena od 32 bita ili 4 bayta.
Neke masinske instrukcije zahtevaju iza sebe i dodatni argument podatak (jos 4 , 8 baytova) a neke ne.
Procesor cita instukciju po instrukciju iz Radne memorije (RAM) sa lokacije koja je upisana u jedan procesorski registar (counter) , uzima dodatan argument sa sledece pozicije u memoriji ako je potrebno i uvecava vednost countera na sledecu poziciju koja treba da se izvrsi.
Kada se instrukcija izvrsi sledeci puls procesorskog sata inicira sledeci krug itd..
Ovo je fizicki deo rada. Inace fizicke vrednosti masinskih instrukcija nisu iste kod svih procesora iako se instrukcije isto zovu i zato postoje razne vrste asemblera za razne tipove mikroprocesora.
Isto tako nisu ni svi procesori 32 bitni.
Sta assembleru daje prednost ?
Nema mnogo razloga za koriscenje assemblera ali oni koji postoje su kljucni u nekim situacijama (kad je bitna brzina izvrsavanja koda , pristup precesorskim i memoiskim reursima i sl).
Da napomenem , da vecina C i C++ kompajlera daju ogranicenu mogucnost koriscenja inline assemblerskog koda u C/C++ kodu.
Znaci asemblerski kod je najbrzi kod koji postoji.
Zasto?
Svi programi i ostali izvrsivi failovi (PE - portable executables) su po svom sastavu masinski / binarni failovi.
Koji se izvode na procesoru na gore opisan nacin.
Ovde moram da napomenem da se na OS u zasticenom modu kao sto je Window programi ne izvrsavaju bukvalno na hardveru nego na virtuelnim masinama koje predstavljaju sloj izmedju softvera i hardvera. Ove virtuelne masine su sustina OS-a i zaduzene su za ucitavanje, izvrsavenje i raspodelu procesorskog vremena medju raznim procesima / programima koji se isvrsavaju. Jedino se njihov rad stvarno izvrsava na hardveru.
Mozemo da zakljucimo da je nas program na Windowsu ustvari interpretiran , sto ga donekle usporava ali osigurava da procesor ne upadne u gresku ako postoji greska u programu.Ovo interpretiranje vazi za sve programe u OS-u ukljucujuci i one napisane u assembleru.
Kada C/C++ kompajleri preve izvrsivi fail od naseg koda oni imaju odredjene sablone.
Naprimer za c++ for petlju postoji odredjeni masinski ekvivalent u koji se ona pretvara. Postoje i odredjene optimalizacije kompajlera ali u sustini na to kako ce on da resi kod mi ne mozemo da uticemo. To je osnovni razlog usporavanja takvog programa u odnosu na asm. Cesto se u masinskom kodu izbacenom iz komailera nalaze i mnoge nepotrebne rutine za razliku od asm koda koji sami ukucamo, gde je uneseno samo ono sto je potrebno.
Ovo je ujedno i odgovor na pitanje Sta asembler razlikuje od ostalih programskih jezika.
Inace sve ozbiljne firme danas preve svoje multiplatformske biblioteke koda u C/C++ jeziku.

U vezi sigurnosti si u pravu. Asm programeri mogu da citaju sve procese otvorene u Debugeru kao bukvar jer je kod prikazan u njima poznatom jeziku. Samo treba da se napomene da je Asm kod u debugeru (programu za simuliranje izvodjenja procesa) prilicno nepregledan. Postoje dobri nacini zastite izvrsivih failova koji se koriste i koji bi po mom misljenju trebali da se dodaju kao opcija u kompajlerima.

U vezi programiranja hardverskih komponenti.
To se uglavnom radi u Asm i redje u C jeziku. To je ova prica o virtuelnim masinama i drajverima. To je prilicno strucan i nezahvalan posao zato sto taj kod radi na realnom nivou hardvera i u slucaju greske moze da obori OS. Necu da ulazim u detalje o ovome, samo da napomenem da je to programiranje potpuno drugacije od programiranja u OS-u.

U vezi ostalog. Asm ne moze da uradi mnogo vise od npr C++ u OS-u i mnogo je tezi / sporiji za rad.
Na osnovu ovog teksta moze da izgleda da nisam ljubitelj Assemblera, sto uopste nije tacno jer je Asm prvi prog. jezik koji sam naucio, ali ovo su opste cinjenice.
Isto tako, moje misljenje, assembler se danas malo koristi ali ne zato sto je zastareo nego zato sto su se programeri olenjili u odnosu na starije majstore.
Nekad su ljudi busili katice da bi napravili program.

I ja se izvinavam strucnijim kolegama ali sam morao da pisem ovako uopsteno da bi i pocetnici mogli nesto da shvate.
O svakoj od ovih tema postoje hiljade napisanih strana.
A mozda ce jos neko posle mene da doda nesto detaljnije.

Na kraju evo ti odnos brzine i popularnosti programskih jezika koji se danas koriste.
Najbrzi su sa leve a najvise korisceni desno.
Asm -> C -> C++ -> VB
Pozdrav
 
Odgovor na temu

tosa
上海, 中国

Član broj: 1811
Poruke: 1342
218.1.28.*

ICQ: 14293955
Sajt: https://github.com/milost..


+48 Profil

icon Re: Sve sto ste zeleli da znate o assembleru a niste smeli da pitate10.05.2007. u 08:47 - pre 206 meseci
Osnovni razlog rada u višim programskim jezicima je produktivnost, to sigurno
nećeš imati radom u asembleru. Takođe, bilo koji pristojan kompajler će napraviti
efikasniji kod nego što bi to većina asm programera bila u stanju - današnji
procesori su dosta kompleksniji i čovek jednostavno ne može na sve da misli.
Volim asembler ali ga ne koristim već godinama (mada ima povremenih izuzetaka
za kritične i veoma kratke delove programa).
 
Odgovor na temu

smrak
Beograd

Član broj: 110394
Poruke: 38
*.dynamic.sbb.co.yu.



Profil

icon Re: Sve sto ste zeleli da znate o assembleru a niste smeli da pitate10.05.2007. u 21:02 - pre 206 meseci
@Eurora3D Team

Prvo hvala na iscrpnom i detaljnom objasnjenju! Mislim stvarni su mi definistivno jasnije, ima jos mnogo da ucim ali si mi definiticno zagolicao mastu.

Vidim da si 3d pa da te pitam jer ima neke veze assembler sa tim bezobrazno zahtevnim 3d programima tima maya itd za rendanje jer je moguce da se on iskoristi na nacin da se ti programi urade ili dorade tako da gutaju manje resursa ili i autodesk pravi na bazi sopstvenih c/c++ biblioteka?

Mislim da mi je jasno zasto se koriste visi programski jezici to jeste lenjost, linija manjeg otpora (nabolje znam na sopstvenom primeru). "Zasto da znam sve kada mi ne treba" tako razmislja vecina ali sa druge strane to prakticnije da zavrsi posao, vremena je uvek malo rokovi kratki a resursa ima za rasipanje...

Po svemu sto si napisao i rekao ja ne bi rekao da nisi ljubitelj asma vec samo realista a ovaj tekst me samo vise podstice da krenem da pokusam da ucim i udjem u celu tu pricu.
 
Odgovor na temu

Eurora3D Team
Nebojsa - Programer & Vodja tima
Beograd

Član broj: 120376
Poruke: 900
195.252.105.*



+7 Profil

icon Re: Sve sto ste zeleli da znate o assembleru a niste smeli da pitate10.05.2007. u 21:45 - pre 206 meseci
Nema na cemu.
3d nam je deo imena jednog proekta. Mozes da vidis sait da se ne rekramiram ovde.
A asembler je u tom proektu koriscen za instalacioni program (ceo) zbog brzine dekompresije i malo kao inline u C++ failovima.
Ostalo je C++.
Ja volim MASM32 (u cemu je najvise i radjeno) i FASM.
Inace postujem ljude koji programiraju u asembleru. To su vredni ljudi i treba se ugledati na njih.
Dobro si rekao ovo za koriscenje programskih jezika.
A ja da se dopunim , treba koristiti tacno onaj nivo programiranja koji je za nesto potreban da bi imali optimalan rezultat. Sto znaci ne koristiti VB za nesto sto bi trebalo Asm i obrnuto.
Pozdrav.



[Ovu poruku je menjao Eurora3D Team dana 10.05.2007. u 22:59 GMT+1]
 
Odgovor na temu

[es] :: Asembler :: Sve sto ste zeleli da znate o assembleru a niste smeli da pitate

[ Pregleda: 3365 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.