Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 01.09.2008, 19:54 Titel: TYPES im Speicher |
|
|
hm, seit einiger Zeit bastle ich an einem OS. da mir asm dafür etwas zu kompliziert wurde, und ich ein großer FB-fan bin, schreibe ich gerade einen kernel in FreeBASIC. jetzt bin ich an den punkt gekommen, an dem ich mich um die GDT kümmern sollte. ich habe mir dafür einen datentyp erstellt:
Code: | type GDTentryType '// a type for the GDT entries
size as USHORT '// the first 16 bits of the size # -> WORD 1
baseaddress as USHORT '// first 16 bits of the address # -> WORD 2
typeofsegment as UBYTE '// access / segmenttype # -> WORD 3
baseaddress2 as UBYTE '// bits 17-24 of the address # /
baseaddress3 as UBYTE '// bits 25-32 of the address # -> WORD 4
additionandsize as UBYTE '// addition and the last 4 bits of the size # /
end type |
kann ich das einfach so am stück in den speicher schreiben, bzw. wie speicher FB das denn im Speicher? |
|
Nach oben |
|
 |
Eastler_dart

Anmeldungsdatum: 25.09.2005 Beiträge: 177 Wohnort: Baden-Würtemberg + Sachsen
|
Verfasst am: 02.09.2008, 00:15 Titel: |
|
|
hallo Alle, hallo sts,
vorweg: genau kann ich das nicht erklären
Aber: mit meinen OpenGL-Versuchen hatte ich probiert, sogenannte Vertiges-Listen zu erstellen. Da stehen schlichtweg die Koordinaten der vielen 3D-Punkte nahtlos hintereinander im RAM. OpenGl gibt man die Länge der Liste und die Ram-Adresse, dann läufts.
Äh-meine natürlich-sollte laufen.
Mein erster Versuch hatte ich mit TYPES gemacht.
Type Positionsangabe
PosX AS UByte
PosY AS UByte
PosZ AS UByte
END TYPE
Dim Liste(10) AS Positionsangabe
For zaehler = 0 TO 10
Liste(zaehler).PosX = zaehler
Liste(zaehler).PosY = zaehler
Liste(zaehler).PosZ = zaehler
NEXT zaehler
So sinngemäß der damalige (mittlerweile gelöschte) Code.
Das lief einfach nicht.
Mit (wieder nur sinngemäß)
DIM AS Ubyte Liste(30)
For zaehler = 0 TO 30 STEP 3
Liste(zaehler+0) = zaehler
Liste(zaehler+1) = zaehler
Liste(zaehler+2) = zaehler
NEXT zaehler
gins dann.
Also: mit Type 3 Vars hintereinander gereiht, stehen im Ram scheinbar nicht einfach direkt hintereinander! Wie aber nun solche getypten Daten im Ram stehen, kann ich auch nicht sagen
hoffe es hilft
Eastler _________________ Kaum macht mans richtig, schon geht's |
|
Nach oben |
|
 |
volta
Anmeldungsdatum: 04.05.2005 Beiträge: 1876 Wohnort: D59192
|
Verfasst am: 02.09.2008, 22:34 Titel: |
|
|
Es wird bei Types und auch Arrays die Werte nacheinander (aufsteigend) im Speicher abgelegt.
teste mal:
Code: | Type Positionsangabe
PosX As UByte
PosY As UByte
PosZ As UByte
End Type
Dim i As Integer
Dim Liste(10) As Positionsangabe
For i = 0 To 10
Liste(i).PosX = i*3
Liste(i).PosY = (i*3)+1
Liste(i).PosZ = (i*3)+2
Next
Dim As UByte Lt(30)
For i = 0 To 30 Step 3
Lt(i+0) = i
Lt(i+1) = i+1
Lt(i+2) = i+2
Next
Dim As UByte Ptr pt1, pt2
pt1 = @Liste(0).PosX
pt2 = @lt(0)
For i = 0 To 30
Print pt1[i];";";pt2[i];" ";
Next
Sleep |
_________________ Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater. |
|
Nach oben |
|
 |
Eastler_dart

Anmeldungsdatum: 25.09.2005 Beiträge: 177 Wohnort: Baden-Würtemberg + Sachsen
|
Verfasst am: 02.09.2008, 23:39 Titel: |
|
|
Hallo Alle, hallo Volta,
klingt cool - freu
Scheint, als hätt ich da was verbockwurschtelt.
Werds demnächst analysieren, wo ich den Bock reingeschossen hab.
Kann also doch im "lesbaren" format diese GL-Listen machen.
danke vielmals.
Eastler _________________ Kaum macht mans richtig, schon geht's |
|
Nach oben |
|
 |
darkinsanity aka sts

Anmeldungsdatum: 01.11.2006 Beiträge: 456
|
Verfasst am: 03.09.2008, 12:08 Titel: |
|
|
ich danke euch, das ist wirklich wichtig. so kann ich die GDT-enträge viel bequemer verwalten/speichern. _________________ Traue keinem Computer, den du nicht aus dem Fenster werfen kannst -- Steve Wozniak |
|
Nach oben |
|
 |
|