Re: Pitanje u vezi simulatora iz mips-a
Pozdrav
Pa kolega, imam isti problem pri pravljenju simulatora kao i ti. Ne znam
kako da vratim program u rezim rada STAND_BY u bilo kom trenutku. Da li si
ti to uspeo da resis i kako? Ili si resio zaobilaznim putem.Ja na kraju
pomisljam da imam mesta u programu koji proveravaju odredjeni uslov, pa na
osnovu toga se program vraca u STAND_BY rezim.
To je lako. Prvo labelom oznacis mesto gde ti pocinje standby rezim rada.
npr stby:
Ako to radis u prekidnoj rutini na steku se nalaze redom FLAGS, CS i IP
povratka, pa je sledeci nacin moguc.
PUSH BP
MOV SP, BP
....ovde kakav god zelis kod
pa tamo gde zelis da izmenis adresu povratka iz prekidne rutine (moze i
bliske ili daleke procedure postupak je isti)
pises
MOV WORD PTR [BP][-2], OFFSET stby
sto ce adresu povratka promeniti u adresu labele na kojoj ti pocinje standby
deo programa
Naravno moraces da izmenis i CS sa [BP][-4] ako ti je CS za rutinu i glavni
program razlicit.
posle IRET, RETF ili RET program nastavlja od labele stby.
Ja imam problem da uokvirim hardverske prekidne rutine za tajmer INT 08 i
tastaturu INT 09 tako sto napisem svoj kod,
zatim gurnem zastavice na stek PUSHF i izvrsim daleki poziv prekidne rutine.
Posle ovog za prekidnu rutinu stek izgleda isto kao i
da je stvarno izvrsen pregid FLAGS, CS, IP. Medjutim, ovo iz nekih razloga
ne radi. Mislim da ne radi u debuggerima zato sto su u pitanju hardwerski
prekidi koji je debbugeri neprekidno koriste (tajmer i tastatura), a da
negde u nastavku programa imam gresku koju iz razloga nefunkcionisanja
debuggera ne mogu da lociram.
Ognjen Milic
Previous by date: Re: 3MHz
Next by date: mips protel
Previous by thread: Re: 3MHz Next by thread: mips protel
Previous by thread: Re: 3MHz Next by thread: mips protel