Autor Thema: Ich raffs net! Spinne ich oder mein PC?!  (Gelesen 5145 mal)

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« am: 21. January 2005, 17:46 »
hallo,

ich bin kurz vorm ausflippen! ich habe hier so ne nette GDT:

GDT:
dw gdt_limit
dd GDT
dw 0
cssys:
dw 0x0100
dw 0x0000
db 0x00
db 10011010b
db 11000000b
db 0x0000
dssys:
dw 0x0100
dw 0x0000
db 0x00
db 10010010b
db 11000000b
db 0x0000
csprg:
dw 0xFFFF
dw 0x0000
db 0x10
db 11111010b
db 11001111b
db 0x00
dsprg:
dw 0xFFFF
dw 0x0000
db 0x10
db 11110010b
db 11001111b
db 0x00
gdt_limit equ $-GDT-1

wenn ich jetzt ein register mit dssys-GDT (also dem datenregister des systems) belegen will, dann gibt das laut meinem assembler 0x0A... nach meiner berechnung müsste da aber 0x10 rauskommen, denn für den 0-deskriptor sind es 1word+1double+1word = 8bytes und für den systemcodedeskriptor auch nochmal 2words + 4 bytes, was auch 8bytes macht... und 0x08*2 sind meiner meinung nach 0x10 und net 0x0A... wo ist da der fehler?

vielen dank,

J!N
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

hannibal

  • Host
  • Beiträge: 400
    • Profil anzeigen
    • brainsware - the rock.
Gespeichert
« Antwort #1 am: 22. January 2005, 12:27 »
sowohl mein taschenrechner, als auch der windows-rechner geben mir 0x10 als ergebnis.. also du spinnst mal nicht  :D
\\o
o//
\o/

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #2 am: 22. January 2005, 14:00 »
Dann gib ihm doch einfach 0x10 explizit an, ist sowieso besser. Eigentlich gibt ein Selektor ja auch nicht denn Abstand zum Anfang der GDT an, auch wenn's lustigerweise so aussieht, aber die 3 Bytes davor haben auch noch ihren Sinn, und sollten nicht übergangen werden. Es ist besser die Werte explizit anzugeben. Du kannst ja auch Datenselektor equ 0x10 machen damit du besser sieht was welcher Wert ist.
Abgesehen davon wäre deine Rechnung korrekt, der Fehler liegt wohl beim Assembler, ich vermute bei dssys-GDT nimmt er bei GDT nicht die Angabe GDT: sondern rechnet von dd GDT an, dann würde jedenfalls 0xA rauskommen.
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #3 am: 22. January 2005, 18:18 »
Zitat von: Roshl
Dann gib ihm doch einfach 0x10 explizit an, ist sowieso besser. Eigentlich gibt ein Selektor ja auch nicht denn Abstand zum Anfang der GDT an, auch wenn's lustigerweise so aussieht, aber die 3 Bytes davor haben auch noch ihren Sinn, und sollten nicht übergangen werden. Es ist besser die Werte explizit anzugeben. Du kannst ja auch Datenselektor equ 0x10 machen damit du besser sieht was welcher Wert ist.
Abgesehen davon wäre deine Rechnung korrekt, der Fehler liegt wohl beim Assembler, ich vermute bei dssys-GDT nimmt er bei GDT nicht die Angabe GDT: sondern rechnet von dd GDT an, dann würde jedenfalls 0xA rauskommen.


nö, dann gibt er mir eine GPF-Exception!
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

Roshl

  • Beiträge: 1 128
    • Profil anzeigen
    • http://www.lowlevel.net.tc
Gespeichert
« Antwort #4 am: 22. January 2005, 18:21 »
dann ist der Deskriptor falsch
[schild=1]Wieder ein wertvoller(?) Beitrag von Roshl[/schild]

joachim_neu

  • Beiträge: 1 228
    • Profil anzeigen
    • http://www.joachim-neu.de
Gespeichert
« Antwort #5 am: 23. January 2005, 01:23 »
Zitat von: Roshl
dann ist der Deskriptor falsch


stimmt, der deskriptor war falsch, aber das ist immernoch kein grund für den assembler, da was falsches zu berechnen, oder?
http://www.joachim-neu.de | http://www.orbitalpirates.de | http://www.middleageworld.de

System: 256 RAM, GeForce 2 MX 400, AMD Athlon XP 1600+, Windows XP, 1x Diskette, 1x DVD-ROM, 1x CD-R(W) Brenner,...

 

Einloggen