|
Das deutsche QBasic- und FreeBASIC-Forum Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
|
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
Autor |
Nachricht |
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 02.02.2005, 22:24 Titel: Variablenübergabe an ASSEMBLER-Prozedur |
|
|
Hi Leute!
Ich arbeite grade an meiner ersten SVGA-Lib, und möchte sie in ASSEMBLER schreiben, damit es in ner annehmbaren geschwindigkeit läuft.
Jetzt habe ich aber ein problem mit der Variablenübergabe:
Das PROC SvgaInit soll den Parameter mode übergeben bekommen, und die Parameter xw, yw und cz zurückgeben.
(mode: Modusnummer
xw/yw: X/Y-Auflösung
cz: Farbzahl)
Wenn ich im QB dann schreibe:
Code: | DECLARE SUB SvgaInit (BYVAL mode, BYVAL xw .....) |
dann wird nur mode übergeben, der "Status-Block" bleibt unangetastet. Klar, dafür ist er ja auch entworfen.
Wenn ich die BYVAL's weglasse, wird aber nur das Offset übergeben. Wie kann ich das Segment mitschicken?
Sicher, möglich wäre so etwas:
Code: |
DECLARE SUB SvgaInit (BYVAL mode, xw, ..., BYVAL segment)
segment = VARSEG(xw)
|
Aber das gefällt mir nicht, weil ich diesen Statusblock auch an andere Prozeduren übergeben will (z.B. SvgaPset), und dann wird es zu unübersichtlich, weil dann zu viele Parameter da sind.
Um das wenigstens ein bisschen zu vereinfachen habe ich jetzt xw, yw und cz zum Record info zusammengefasst:
Code: |
TYPE ModeInfo
xw AS INTEGER
yw AS INTEGER
cz AS INTEGER
END TYPE
DIM info AS ModeInfo
|
Das Problem ist halt, dass bei Records nur die Adresse übergeben werden kann.
Man kann also nicht einfach so etwas wie "segment as INTEGER" einfügen...
Praktisch wäre halt, so etwas wie ein ASM-Äquivalent von COMMON SHARED zu haben, aber so etwas kenne ich leider nicht.
Ihr vielleicht?
Thanks for help! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 02.02.2005, 22:46 Titel: |
|
|
statt byval mußt du seg schreiben |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 02.02.2005, 23:15 Titel: |
|
|
Ah!
Wenn ich dass dann POPe, dann bekomme ich also:
BYVAL mode => Modusnummer
info => Offset Modusinfo
SEG info => Segment Modusinfo
Oder muss ich des nochmal extra POPen, kommt dann also ein 32-Bit-Wert?
Aber danke schon mal für den Tipp! _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
ChemicalWarfare
Anmeldungsdatum: 15.09.2004 Beiträge: 152
|
Verfasst am: 03.02.2005, 15:05 Titel: |
|
|
seg heißt seg + offset, also 32 bit
mußt natürlich gucken in welcher reihenfolge qbasic die adresse pusht, also seg:offset oder offset:seg |
|
Nach oben |
|
|
Dusky_Joe
Anmeldungsdatum: 07.01.2005 Beiträge: 1007 Wohnort: Regensburg/Oberpfalz
|
Verfasst am: 04.02.2005, 17:11 Titel: |
|
|
hm, also allgemein gilt die reihenfolge:
Rücksprung-Seg
Rücksprung-Offseg
Parameter 1
Parameter 2
...
Parameter n
Also wirds wohl auch Seg:Off sein, aber auch wenns nicht so wäre - es gibt ja nur 2 Möglichkeiten
Also danke für den Tipp!
Aber wies aussieht, wir in nächster zeit nix aus dem ausprobieren, weil der Sprechende Comp hauptziel is _________________ fully biological degradable
Once, the big wave arrives, you've got two ways, you can go:
Either, you ride it, or you don't do.
But, if you don't ride, you'll never know wether you'd have gone wet. |
|
Nach oben |
|
|
|
|
Du kannst keine Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum nicht antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen.
|
|