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

Kako pronaci adresu nestaticke metode objekta klase.

[es] :: C/C++ programiranje :: Kako pronaci adresu nestaticke metode objekta klase.

[ Pregleda: 4275 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Arbatash Vex
Veljko Batinić
Beograd

Član broj: 20813
Poruke: 31
*.adsl.static.sezampro.yu.

ICQ: 70423594


Profil

icon Kako pronaci adresu nestaticke metode objekta klase.03.04.2007. u 00:29 - pre 207 meseci
Ja sam student ETF-a (racunarska tehnika i informatika) i pravim projekat "kernela" iz Operativnih Sistema 1.
Problem mi je kod sledeceg:
Na koji nacin mogu da dobijem stvarnu adresu nestaticke metode nekog objekta date klase, tj:
class Thread {
public:
void run();
};
Thread nit;


Kako naci adresu metode nit.run() tj adresu gde pocinje kod te metode kako bih mogao da je upisem u PCB

Moj asistent mi je rekao da napravim staticku medodu kojoj stavim objekat (nit) kao argument, i ona da mi pokrene run() metodu tog argumenta, a mogu da dobijem adresu staticke metode, to nije sprono. Ali kako da pomocu adrese objekta &nit i adrese staticke metode &(Thread::staticka_metoda) da dodjem do prave adrese metode run() za odredjeni objekat tipa Thread.
Inace radim u Borland C++ 3.1

[Ovu poruku je menjao Arbatash Vex dana 03.04.2007. u 01:59 GMT+1]
 
Odgovor na temu

X Files
Vladimir Stefanovic
Pozarevac

SuperModerator
Član broj: 15100
Poruke: 4902
*.tekostolac.co.yu.

Jabber: xfiles@elitesecurity.org


+638 Profil

icon Re: Kako pronaci adresu nestaticke metode objekta klase.03.04.2007. u 10:22 - pre 207 meseci
Pogledaj možda ovde:
http://tinyurl.com/3b5bmw
(poslednji odgovor)

P.S. Ako nije tajna, ko je asistent?
 
Odgovor na temu

Arbatash Vex
Veljko Batinić
Beograd

Član broj: 20813
Poruke: 31
*.adsl.static.sezampro.yu.

ICQ: 70423594


Profil

icon Re: Kako pronaci adresu nestaticke metode objekta klase.03.04.2007. u 11:57 - pre 207 meseci
Hvala za pomoc, sad cu da ga izbistrim.
Ne znam da li smem da kazem koji je asistent, mozda to moze da utice na moje polaganje ispita :-P
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
65.213.80.*



+6 Profil

icon Re: Kako pronaci adresu nestaticke metode objekta klase.03.04.2007. u 13:22 - pre 207 meseci
Citat:
Arbatash Vex:  Ali kako da pomocu adrese objekta &nit i adrese staticke metode &(Thread::staticka_metoda) da dodjem do prave adrese metode run() za odredjeni objekat tipa Thread.


Funkcije članice klase imaju iste adrese za sve objekte. U praksi, poziv funkcije članice za neki objekat je ekvivalentno pozivu slobodne funkcije sa dodatnim argumentom this koja je prijatelj toj klasi.

Na primer:

Code:

string a;
string b;

a.append("prvi"); //ispod haube: append("prvi", &a);
b.append("drugi"); //ispod haube: append("drugi", &b);


 
Odgovor na temu

Arbatash Vex
Veljko Batinić
Beograd

Član broj: 20813
Poruke: 31
*.adsl.sezampro.yu.

ICQ: 70423594


Profil

icon Re: Kako pronaci adresu nestaticke metode objekta klase.03.04.2007. u 13:48 - pre 207 meseci
Znaci slaba vajda od moje zelje.
Onda nemam pojma kako da upisem u PCB stvarnu adresu odakle mi pocinje odredjena nit, posto mi je to najvaznije za multithreading.
Na zalost, ne daju nam vise da to radimo u C-u inace bi bilo mnogo lakse.
 
Odgovor na temu

Dragi Tata
Malo ispod Kanade

Član broj: 1958
Poruke: 3906
65.213.80.*



+6 Profil

icon Re: Kako pronaci adresu nestaticke metode objekta klase.03.04.2007. u 14:11 - pre 207 meseci
Izvini na neznanju, a šta je to PCB?

Inače, možeš i u C++u da koristiš slobodne funkcije, zar ne? Ako ti ne daju, onda uradiš trik sa statčikom funkcijom koja primi adresu objekta kao argument, kastuje adresu u pointer na odgovarajući objekat i onda pozove članicu tog objekta.

Pogledaj recimo ovaj članak - ima i mnogo više nego što ti treba: http://www.codeproject.com/win32/callback_adapter.asp


 
Odgovor na temu

Arbatash Vex
Veljko Batinić
Beograd

Član broj: 20813
Poruke: 31
213.244.208.*

ICQ: 70423594


Profil

icon Re: Kako pronaci adresu nestaticke metode objekta klase.03.04.2007. u 15:08 - pre 207 meseci
PCB je struktura/klasa u kojoj se cuva kontekst procesa za neki odredjeni thread. Najcesce se u njemu cuva PC, SP, BP i procesorski registri, u slucaju da se ne cuvaju na steku, sto je bolja varijanta.
Svaki objekat Thread klase ima svoj PCB. Kada se stvara proces, u PCB.PC se upise pocetna adresa run() funkcije. I kad taj thread dodje na red za izvrsavanje funkcijom dispatch() se "nasilno" na stek push-ne adresa gde treba da se vrati kad zavrsi dispatch() (pocetnu adresu funkcije run()). Pa umesto da se vrati na sledecu funkciju posle dispatch() on skoci na run i pocne da je izvrsava sve dok se nekim interrupt-om ne prekine i da procesor drugom threadu.

Ukratko. Moramo da napravimo implementaciju niti u c++, a posle i simulaciju kernela pod windowsom, ali smemo da koristimo samo standardne staticke .h fajlove.
 
Odgovor na temu

[es] :: C/C++ programiranje :: Kako pronaci adresu nestaticke metode objekta klase.

[ Pregleda: 4275 | Odgovora: 6 ] > FB > Twit

Postavi temu Odgovori

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