x86 interrupt i realmode?

Elektronik- och mekanikrelaterad mjukvara/litteratur. (T.ex schema-CAD, simulering, böcker, manualer mm. OS-problem hör inte hit!)
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

x86 interrupt i realmode?

Inlägg av blueint »

När en interrupt inträffar i realmode på en x86 processor så sparas flaggorna, CS, och IP på stacken. Och plockas tillbaks med IRET instruktionen. Men stacken är ju definierad med SS:SP av det program som körs och som råkar bli avbrutet. Så om processorn på eget bevåg slänger in 6 bytes extra på stacken borde det kunna bli problem. Så var lägger processorn dessa värden ..?
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: x86 interrupt i realmode?

Inlägg av sodjan »

Du menar om ISR'en pushar 6 egna värden ?
Då får den poppa dom innan IRET.
Eller vad menar du med "processorn" ??
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: x86 interrupt i realmode?

Inlägg av johano »

Ja, om det inte finns 6 bytes ledigt på stacken, eller om SP pekar åt helsike fel
när interruptet sker kan det säkert inträffa något intressant...

/johan
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: x86 interrupt i realmode?

Inlägg av blueint »

Nja.. säg att du behöver 4 bytes stor stack. Och trycker in t.ex 2 bytes. Och så sker ett hårdvaruinterrupt. Då lär väl processorn lägga in sina egna 6 extra bytes på stacken? och isåfall skriva 4 bytes utanför det reserverade utrymmet?
johano
Inlägg: 1943
Blev medlem: 22 januari 2008, 10:07:45
Ort: Stockholm

Re: x86 interrupt i realmode?

Inlägg av johano »

Exakt, och därför behöver stacken ju vara minst 6bytes stor - eller så får man avaktivera interrupt
under tiden man har mindre stack än så...

Men varför ha en 4-byte stor stack på x86???

/johan
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: x86 interrupt i realmode?

Inlägg av sodjan »

"Stack overflow".
Får man det är hela lösningen fel-designad.
Och det finns 1000-tals sätt att designa system fel,
inget unikt med stack-fel i det avseendet...

> säg att du behöver 4 bytes stor stack.

Väldigt orealistiskt i en x86 miljö.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: x86 interrupt i realmode?

Inlägg av blueint »

johano, Säg att man har en stack på 512 bytes och råkar använda 508 bytes, och precis då kommer ett hårdvaruinterrupt..
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: x86 interrupt i realmode?

Inlägg av sodjan »

"Stack overflow". Fortfarande feldesignat från grunden.
Spelar igen roll hur stor stacken är, tar den slut så gör den.
blueint
Inlägg: 23238
Blev medlem: 4 juli 2006, 19:26:11
Kontakt:

Re: x86 interrupt i realmode?

Inlägg av blueint »

Feldesignad processor isåfall. Eftersom den utgår från att alla program den avbryter ska reservera extra utrymme ifall det inträffar. Istället för att ha 6-byte extra "on-die".
sodjan
EF Sponsor
Inlägg: 43249
Blev medlem: 10 maj 2005, 16:29:20
Ort: Söderköping

Re: x86 interrupt i realmode?

Inlägg av sodjan »

Är exakt likadant på alla arkitekturer som har en minnesmappad stack.
Vilket är i princip alla. Man får helt enkelt se till att ha stack så det räcker.
Användarvisningsbild
kimmen
Inlägg: 2042
Blev medlem: 25 augusti 2007, 16:53:51
Ort: Stockholm (Kista)

Re: x86 interrupt i realmode?

Inlägg av kimmen »

Med tanke på att real mode är konstruerat för att köra ett enda program i taget är det inte alls konstigt. Interruptrutinen lär ändå behöva mer stackutrymme för att kunna göra något vettigt, och varifrån skulle det komma om inte från stacken? Och vad händer om ett interrupt avbryter ett interrupt? Då behövs mer utrymme.

Moderna multitaskingsystem har normalt en eller flera systemstackar som används för sådant. I protected mode på x86 kan processorn vad jag förstått byta stack när ett interrupt kommer och processorn går över till ring 0. Eller, det måste ju vara så för annars skulle program kunna krascha systemet väldigt enkelt.
Användarvisningsbild
Swech
EF Sponsor
Inlägg: 4750
Blev medlem: 6 november 2006, 21:43:35
Ort: Munkedal, Sverige (Sweden)
Kontakt:

Re: x86 interrupt i realmode?

Inlägg av Swech »

680xx familjen tryckte in en jämrans massa på stacken vid interrupts,
visserligen med en separat stackpekare. Men x86, och liknande
förutsätter ju att man har rejält med RAM (i jämförelse med PIC /AVR och liknande)

Så problemet verkar mest vara av akademisk natur
Swech
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46947
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: x86 interrupt i realmode?

Inlägg av TomasL »

blueint skrev:Feldesignad processor isåfall. Eftersom den utgår från att alla program den avbryter ska reservera extra utrymme ifall det inträffar. Istället för att ha 6-byte extra "on-die".
Hmm, det är väl bara typ vissa PIC som har HW-stack, till allas förtretelse.
du är ute och reser
Skriv svar