Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.net  
   

Die mobilen Seiten von c++.net:
https://m.c-plusplus.net

  
C++ Forum :: Projekt: OS-Development  ::  Gelöst: TSS64 wird nicht richtig wiedergegeben von VBox     Zeige alle Beiträge auf einer Seite Auf Beitrag antworten
Autor Nachricht
supernicky
Mitglied

Benutzerprofil
Anmeldungsdatum: 06.11.2011
Beiträge: 201
Beitrag supernicky Mitglied 19:45:44 07.06.2016   Titel:   Gelöst: TSS64 wird nicht richtig wiedergegeben von VBox            Zitieren

Hallo,

nach einer kleinen Pause bin ich nun wieder dabei.

Mein Programm läuft auf VBox und Bochs ohne Fehler, zumindest wird nichts
angezeigt :live:

Nun habe ich eine Frage zum Aufbau des TSS64 und wie Virtual Box die
"Daten" darin liest, da es aus meiner Sicht nicht richtig ist.

Erstmal was zum lesen:
Assembler:
VBoxDbg> d 0x10000
%0000000000010000: 00 00 00 00 00 00 30 00-00 00 00 00 00 00 00 00  ......0.........
%0000000000010010: 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00  ................
%0000000000010020: 00 00 00 00 00 80 30 00-00 00 00 00 00 00 31 00  ......0.......1.
%0000000000010030: 00 00 00 00 00 80 31 00-00 00 00 00 00 00 32 00  ......1.......2.
%0000000000010040: 00 00 00 00 00 80 32 00-00 00 00 00 00 00 33 00  ......2.......3.
%0000000000010050: 00 00 00 00 00 80 33 00-00 00 00 00 00 00 00 00  ......3.........

Dies ist mein Speicher ab Adresse 0x10.000 an der mein TSS angelegt wird.

Assembler:
1
2
3
4
5
6
7
8
9
VBoxDbg> dt64 0x10000
TSS64 at %0000000000010000 LB 68 (min=0068)
rsp0=0000000000000000 rsp1=0000000000000000 rsp2=0000000000000000
ist1=0000000000008000 ist2=0000000000000000
ist3=0000000000008000 ist4=0000000000000000
ist5=0000000000008000 ist6=0000000000000000
ist7=0000000000008000 iomap=0000
No interrupt redirection bitmap
No I/O bitmap

Hier ist der Auszug aus VBox wie es die Daten liest.
Den Aufbau habe ich aus den AMD Manuals Vol. 2 Seite 339.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
I/O-Permission Bitmap (IOPB) (Up to 8 Kbytes) IOPB
 
I/O MapBase, Reserved, IGN +64h
Reserved, IGN   +60h
Reserved, IGN   +5Ch
IST7[63:32]     +58h
IST7[31:0]      +54h
IST6[63:32]     +50h
IST6[31:0]      +4Ch
IST5[63:32]     +48h
IST5[31:0]      +44h
IST4[63:32]     +40h
IST4[31:0]      +3Ch
IST3[63:32]     +38h
IST3[31:0]      +34h
IST2[63:32]     +30h
IST2[31:0]      +2Ch
IST1[63:32]     +28h
IST1[31:0]      +24h
Reserved, IGN   +20h
Reserved, IGN   +1Ch
RSP2[63:32]     +18h
RSP2[31:0]      +14h
RSP1[63:32]     +10h
RSP1[31:0]      +0Ch
RSP0[63:32]     +08h
RSP0[31:0]      +04h
Reserved, IGN   +00h



Assembler:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
VBoxDbg> u64 0x2010a1
%00000000002010a1 48 c7 c7 00 00 01 00    mov rdi, 00000000000010000h
%00000000002010a8 48 33 c0                xor rax, rax
%00000000002010ab 48 c7 c1 0d 00 00 00    mov rcx, 0000000000000000dh
%00000000002010b2 f3 48 ab                rep stosq
%00000000002010b5 48 c7 c7 00 00 01 00    mov rdi, 00000000000010000h
%00000000002010bc 48 83 c7 04             add rdi, byte 00000000000000004h
%00000000002010c0 48 c7 c0 00 00 30 00    mov rax, 00000000000300000h
%00000000002010c7 48 ab                   stosq
%00000000002010c9 48 83 c7 18             add rdi, byte 00000000000000018h
%00000000002010cd 48 c7 c0 00 80 30 00    mov rax, 00000000000308000h
%00000000002010d4 48 ab                   stosq
%00000000002010d6 48 05 00 80 00 00       add rax, 00000000000008000h
%00000000002010dc 48 ab                   stosq
%00000000002010de 48 05 00 80 00 00       add rax, 00000000000008000h
%00000000002010e4 48 ab                   stosq
%00000000002010e6 48 05 00 80 00 00       add rax, 00000000000008000h
%00000000002010ec 48 ab                   stosq
%00000000002010ee 48 05 00 80 00 00       add rax, 00000000000008000h
%00000000002010f4 48 ab                   stosq
%00000000002010f6 48 05 00 80 00 00       add rax, 00000000000008000h
%00000000002010fc 48 ab                   stosq
%00000000002010fe 48 05 00 80 00 00       add rax, 00000000000008000h
%0000000000201104 48 ab                   stosq
%0000000000201106 33 c0                   xor eax, eax
%0000000000201108 b9 04 00 00 00          mov ecx, 000000004h
%000000000020110d f3 48 ab                rep stosq
%0000000000201110 90                      nop
%0000000000201111 eb fd                   jmp -003h (00000000000201110h)

Und hier noch der Code der ausgeführt wird, um das TSS zu erstellen.

Nun mal meine Frage. Wieso liest er rsp0 nicht als 0x0000000000300000
so wie es in den Zeilen 6 - 9 gemacht wird?

So sollte es doch gelesen werden:
Assembler:
1
2
3
4
5
6
7
8
9
VBoxDbg> dt64 0x10000
TSS64 at %0000000000010000 LB 68 (min=0068)
rsp0=0000000000300000 rsp1=0000000000000000 rsp2=0000000000000000
ist1=0000000000308000 ist2=0000000000310000
ist3=0000000000318000 ist4=0000000000320000
ist5=0000000000328000 ist6=0000000000330000
ist7=0000000000338000 iomap=0000
No interrupt redirection bitmap
No I/O bitmap


Nicky :confused:

Lösung: VBOX kann es nicht, liegt vielleicht an der Mischung aus 8 und 16 Byte-großen Einträgen in der Tabelle.


Zuletzt bearbeitet von supernicky am 16:18:12 28.11.2016, insgesamt 2-mal bearbeitet
C++ Forum :: Projekt: OS-Development  ::  Gelöst: TSS64 wird nicht richtig wiedergegeben von VBox   Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben.
Sie können auf Beiträge in diesem Forum antworten.
Sie können Ihre Beiträge in diesem Forum nicht bearbeiten.
Sie können Ihre Beiträge in diesem Forum nicht löschen.
Sie können an Umfragen in diesem Forum nicht mitmachen.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.net ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.