pomoc s assmblerom ;)
ked som dobre pochopil, tak v assembleri sa skoro vsetko robi pomocou systemovych preruseni(nemate niekto zdroj, kde si vypisane vsetky, alebo aspon tie najpouzivanejsie systemove prerusenia?). jednym z nich je int 80h. co je(ak som dobre pochopil) prerusenie po ktorom sa vola operacny system a vyuzivaju sa jeho funkcie. na http://www.digilife.be/quickreferences/QRC/LINUX%20System%20Call%20Quick%20Reference.pdf
som nasiel "zopar" tychto syscallov. mna by uz len zaujimalo, ze ako sa tieto syscally volaju? myslim, ako viem, ze ake maju parametre a pocet tychto parametrov(myslim argumentov)?
a neda mi este otazka: co sa systemovych preruseni tyka, tie su nezavisle na OS, alebo na platforme? alebo ani jedno z toho?
a co syscally?(tie asi su zavisle na OS, alebo nie?)
velmi sa medzi roznymi platformamy lisia(myslim interrupty a syscally), alebo sa snazia byt medzi sebou ako-tak kompatibilne?
diky :)
Pre pridávanie komentárov sa musíte prihlásiť.
niektore volania su podla standardu POSIX/SUS (v jadre) a tiez niektore su v libc, libpthread a tak, tie su teoreticky kompatibilne, samotne cisla volani zavisia od jadra, prelozene volania (z C) zavisia od architektury
co su v texte myslene platformy? x86? assembler nie je prenositelny
a nemusis pouzivat len volania systemu, mozes si prilinkovat libc a volat funkcie (samozrejme to musi byt tak ako to robi C na danej platforme)
a tvoje otazky sa velmi netykaju assembleru
serial o assembleri na Roote ( IMHO je to iba prelozena nejaka EN HOW TO [a v clankoch je trochu chyb -- viz komentare pod clankom] )
http://www.root.cz/clanky/programujeme-assembler-linux/
stranka o asemblery po Linuxom, odporuvam pozriet na pojekt asmutils ( linuxova distribucia, kede je cely userspace programovany v assemblery )
http://asm.sourceforge.net/
Vyborna kniha o assemblery :
http://knihy.cpress.cz/knihy/pocitacova-literatura/programovani/ucime-se-programovat-v-jazyce-assembler-pro-pc/
Domovska stranka autora :
http://www.assembler.cz/
Prednaska o assemblery pod Linuxom ( je sucastou prilohy v knihe )
ftp://media.sh.cvut.cz/avc/Akce_SH/OpenWeekend_2002/marek-assembler.avi
este by ma zaujimala jedna vec, resp. viac veci v jednej(mozno to je napisane v niektorom z tych linkov, ale chcel by som si to vyjasnit co najskor) ;-)
ked mam viac procesov, tak KAZDY ma vlastny pamatovy priestor od 0x00000000 po nieco? cize kazda adresa sa viackrat nachadza v pamati? alebo ten jeden pamatovy priestor je vsetky procesy dokopy?
and what about stack? ;) ten ma tiez kazdy proces vlastny?resp. kde ukazuje ESPcko(tiez ma kazdy proces vlastne)? ked mam 100 procesov, tak 100 procesov pouzije ten isty stack? nebude v tom bordel potom?
aa este by ma zaujimalo, co je v pamati okrem tych procesov? nejaku cast pouziva aj OS? a co v nom ma? nejake tabulky s niecim?a tie syscally su vlatsne tiez funkcie jadra, ze? nachadzaju sa niekde v pamati? da sa predpokladat, ze rovnaky OS bude mat na rovnakom(podobnom) mieste podobne informacie?
no to bola moja trosku rozpisana otazocka :)
kazdy proces ma svoj _vlastny_ virtualny adresovy priestor, ktory nezdiela s ostatnymi procesmi ( ak neratam dynamicke kniznice, ktory vykonny kod je namapovany do VM iba na spustenie a citanie a este zdielana pamet, ktora suvisi s medziprocesovou komunikaciou) kukni do /proc/pid/maps
( za pid si dopln pid procesu )
>and what about stack? ;) ten ma tiez kazdy proces vlastny?
kazdy proces ma vlastny VM priestor a v nom ma vlastny stack, btw. to by bolo teda synchornizovat push/pop do zdielaneho stacku :D
>resp. kde ukazuje ESPcko ?(tiez ma kazdy proces vlastne)
na vrchol zasobnika, kukni sa sam
ESP je register a teno je v CPU iba jeden, takze kazdy porces nema vlastny, lenze pri prepinani procesov sa povodne hodnoty "zalohuju" a znovu "obnovia", takze proces nezisti ze z registrami operoval niekdo iny
>ked mam 100 procesov, tak 100 procesov pouzije ten isty stack? nebude v tom bordel potom?
Nie nebude v tom bordel, lebo kazdy jeden prpces ma jeden zasobnik. btw. a ak ma jeden proces viac vlakien tak kazde vlakno ma vlastny zasobnik v ramci toho procesu.
>aa este by ma zaujimalo, co je v pamati okrem tych procesov?
vo VM procesu je na archirekture x86 treti (3) az stvrty (4) GB VM pamete vyhradeny jadru, proces nemoze to tejto pemete citat a ani do nej zapisovat. ( BTW aj ked sa docitas, ze jadro nepouziva hned rovno 3GB VM ( mysleno treti GB VM )
>syscally su vlatsne tiez funkcie jadra, ze?
Ano, syscally su funkcie jadra. napr. v /usr/src/linux/kernel/fork.c najdes funkciu ktora sa spusta v jadre ( alebo inac povedane ju pusta proces beziaci v kontexte jadra) pri syscalle fork
>da sa predpokladat, ze rovnaky OS bude mat na rovnakom(podobnom) mieste podobne informacie?
IMHO nie neda, a moze ti to byt jedno, lebo do toho adresoveho priestoru sa proces nedostane.
http://www.kolibrios.org/