[ stale85 @ 31.08.2007. 18:29 ] @
Radim na projektu iz predmeta Operativni Sistemi 1, gde treba da napravim mali OS koji podrzava rad sa nitima, interupt-ove i druge stvarcice. Za izradu projekta koristimo Turbo C++ v3.1, i osnovne usluge DOS-a. Posto nam je zabranjeno da koristimo usluge OS-tema da bi resavali date probleme sami moramo da napravimo kod za dispatch, time sharing,...
Veci deo vremena sa proveo na kodu dispatch() funkcije koja nije radila zbog toga sto sam promenljive (S[tack]S[egment] , S[tack]P[ointer]) hvatao preko funkcija i namestao ih pomocu metoda klase PCB. Kada stavim promenljive te klase (ss i sp) kao globalne promenljive i pristupam im, sve radi okej.
Postavio sam u kodu #ifdef STRANGE_BUG, i ide kod koji pravi probleme. A kod #ifndef STRANGE_BUG, onda ide kod koji radi.
Problem se inace manifestuje tako sto mi padne xdosemu, bas pre nego sto treba da izadje iz dispatch funkcije i da se prebaci. Dobija se inace greska da cita nelegalnu instrukcuju OP:ff:ff:ff:ff, tako mi je rekao ortak koji je ovaj kod isprobao na windows-u, i uspeo na kraju da nadje bag.
Interesuje me da li neko zna zbog cega se mozda ovaj problem javlja, ili gde bi mogao da potrazim resenje?
U upload-u se nalazi kod dispatch funkcije. Ovaj kod moze da se iskompajlira nezavisno od ostatka projekta.