Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.
Verwijderd
Ten eerste: Hoe is je memory gemapped? Gebruik je paging waardoor die addressen misschien nergens naartoe verwijzen?Op woensdag 09 januari 2002 19:52 schreef _the_crow_ het volgende:
Ik ben bezig met het programmeren van een 'OS'.
Nu heb ik een IDT gemaakt, maar telkens als ik een Interrupt aanroep ontspoort EIP (wordt heel groot).
Ik heb de offsets van de IVT overgenomen (en er een lineair adres van gemaakt) in de IDT.
Wat doe ik fout?
Ten tweede: je jumped nu dus (als het een 1 op 1 memory mapping is) rechtstreeks naar 16-bit real mode. Dat gaat dus niet werken als je in een 32-bit omgeving bezig bent.
Heb je ook rekening gehouden met de IDT lay-out (IVT is offset:segment (samen 4 bytes voor iedere entry). IDT is
2 bytes: offset0_15
2 bytes: selector
2 bytes: type
2 bytes: offset16_31
Met de lay-out heb ik wel rekening gehouden.Op woensdag 09 januari 2002 22:04 schreef 4of10 het volgende:
[..]
Ten eerste: Hoe is je memory gemapped? Gebruik je paging waardoor die addressen misschien nergens naartoe verwijzen?
Ten tweede: je jumped nu dus (als het een 1 op 1 memory mapping is) rechtstreeks naar 16-bit real mode. Dat gaat dus niet werken als je in een 32-bit omgeving bezig bent.
Heb je ook rekening gehouden met de IDT lay-out (IVT is offset:segment (samen 4 bytes voor iedere entry). IDT is
2 bytes: offset0_15
2 bytes: selector
2 bytes: type
2 bytes: offset16_31
Nee, ik gebruik geen paging. Ik heb momenteel nix gedaan aan mapping. Misschien dom, maar moet dat?
Heb ik dan automatisch 1 op 1 memory mapping?
Hoe voorkom ik dat ik naar 16-bit real-mode jump.
Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.
Als je je paging niet hebt aangezet wel.Heb ik dan automatisch 1 op 1 memory mapping?
Door ergens anders naartoe te springenHoe voorkom ik dat ik naar 16-bit real-mode jump.
Maak een simpele functie (iets op beeldscherm printen, geheugenaddr ophogen, beepen oid) en laat je idt-entries daarnaartoe wijzen. Dat zal al stukken schelen.
Yo dawg, I heard you like posts so I posted below your post so you can post again.
Hoe kan ik de interrupts 00h t/m 1Fh overnemen uit de IVT? Anders moet ik ze allemaal zelf maken.
Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.
Verwijderd
Niet. In 32-bit mode kun je niet zomaar de 16-bit real mode interrupts gebruiken. Je moet ze dus of zelf schrijven of aanroepen via V86 mode (zie Intel i386 documentatie)Op donderdag 10 januari 2002 14:32 schreef _the_crow_ het volgende:
Hoe kan ik de interrupts 00h t/m 1Fh overnemen uit de IVT? Anders moet ik ze allemaal zelf maken.
Kan ik dan als ik een interrupt aanroep ff tijdelijk overspringen naar Real-Mode of V86 (normaal dan wel in p-mode)?
Kan dit ook als paging aan staat?
Dus als je dan Interrupt 13h in je Kernel aanroept, krijg je ongeveer deze code op de plaats die je opgeeft in je IDT:
CALL SwitchToRealMode
INT 13h
CALL SwitchToProtMode
Kan dit ook als paging aan staat?
Dus als je dan Interrupt 13h in je Kernel aanroept, krijg je ongeveer deze code op de plaats die je opgeeft in je IDT:
CALL SwitchToRealMode
INT 13h
CALL SwitchToProtMode
Schrödingers cat: In this case there are three determinate states the cat could be in: these being Alive, Dead, and Bloody Furious.
Verwijderd
Ja en Ja. Je kunt inderdaad switchen naar real mode, de interrupt uitvoeren, en dan weer terug (deze switch is relatief gezien wel traag en je moet steeds de pmode instellingen weer terugzetten).Op vrijdag 11 januari 2002 11:59 schreef _the_crow_ het volgende:
Kan ik dan als ik een interrupt aanroep ff tijdelijk overspringen naar Real-Mode of V86 (normaal dan wel in p-mode)?
Kan dit ook als paging aan staat?
Dus als je dan Interrupt 13h in je Kernel aanroept, krijg je ongeveer deze code op de plaats die je opgeeft in je IDT:
CALL SwitchToRealMode
INT 13h
CALL SwitchToProtMode
Pagina: 1