![]() |
Anzeige:
|
|
|||||||
| Spezielles Für die Bereiche API, Subclassing, Inline-Assembler, Prozesse, ect. |
|
![]() |
|
|
LinkBack | Themen-Optionen | Ansicht |
|
|
#1 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 20.02.2009
Ort: Essen
Beiträge: 119
|
Hallo ,
ich versuche mich gerade in Xpia, aber leider ohne Erfolg. Wer kann mir erklären, warum der Compiler mit Fehlermeldung abbricht???? HTML-Code:
$make I 'CLE
declare A&
AsmStart
mov eax,1
mov ebx,1
.while ebx == 10
add ebx,ebx
.endw
AsmEnd
waitkey
ist es möglich aus einer .while .endw Schleife Werte an XProfan zu übergeben und wie
__________________
Viele Grüsse Mike Window XP Prof SP3 Windows 7 ultimate Xprofan X2 |
|
|
|
|
|
|
#2 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Hi.
Freut mich, dass du den Mut hast, mal Neues auszuprobieren! Zu deinem Code: Du hast vergessen hinter AsmStart einen Namen für die Funktion zu übergeben, z.B. AsmStart Name. In deinem Code kannst du keine Werte aus der Schleife an XProfan übergeben, weil XProfan wartet, bis die Funktion abgearbeitet wird. Du kannst zwar Werte an Variablen übergeben... Code:
$make I
declare A&
AsmStart Name(Addr(a&))
mov eax,1
mov ebx,1
mov edx,para1
.while ebx == 10
add ebx,ebx
mov [edx],ebx
.endw
AsmEnd
waitkey
Du könntest aber im Assemblerteil einen zweiten Thread starten und dort die Werte übergeben. Dann laufen quasi zwei "Programme" gleichzeitig. Schau dir mal das XPIA-Beispiel "Permanente_Uhr.prf" an. Dort passiert nämlich genau das.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
#3 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 20.02.2009
Ort: Essen
Beiträge: 119
|
@ Frank,
vielen Dank für Deine Hilfe. Habe erst gestern mit XPIA angefangen und erst nach Deinem Posting Programme im XPIA-Ordner entdeckt. Die werde ich mir jetzt erst mal zu Gemüte führen. Eine Frage hätte ich noch, bei dem Progammtext in meinem ersten Posting Meldete der Compiler einen Fehler in Zeile 147. Mein Progamm hat aber nicht mal 20 Zeilen. Auf Welche Datei bezieht sich der Compiler.
__________________
Viele Grüsse Mike Window XP Prof SP3 Windows 7 ultimate Xprofan X2 |
|
|
|
|
|
#4 (Direktlink) | |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
XPIA erstellt aus deinen ASM-Funktionen eine Dll. Die Zeilennummer bezieht sich auf den Quellcode dieser .asm-Datei, da die Fehlermeldung vom Assembler stammt. Diese Datei wird im XPIA-Ordner sources generiert, unter gleichem Namen wie deine Ursprungsdatei. Dadurch, dass der Funktionsname fehlt, generiert der Assembler irrtümlich:
Code:
; ________________________________________________________________________________________________________________ eax,1 proc ; ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ push ebx push edi push esi mov eax,1 mov ebx,1 .while ebx == 10 add ebx,ebx .endw pop esi pop edi pop ebx ret 0 eax,1 endp Zitat:
Jedenfall generiert XPIA eine Dll mit allen Funktionen. Die Dll wird in Quellcode-Form in deinen Source eingebaut und dann per Memory-Module beim Starten geladen und passend angesprungen.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. Geändert von Frabbing (18.10.2009 um 11:45 Uhr) |
|
|
|
|
|
|
#5 (Direktlink) |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Hab gerade ein kleines Update gemacht auf Version 4.13.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
|
|
#6 (Direktlink) |
|
Weiß worum´s geht
![]() Registriert seit: 20.02.2009
Ort: Essen
Beiträge: 119
|
Hallo,
ich habe folgenden Programmtext: HTML-Code:
$make I ;CLE
declare A&,b&, Uhr$
a& = 1
Uhr$ = time$(1)
Print uhr$
AsmStart Schleife(a&)
;mov eax,para1
.while eax == 1000000
add eax,para1
.endw
AsmEnd (b&)
Uhr$ = time$(1)
Print uhr$
Print " nach Schleife"
Print b&
waitkey
Sollte ich dort nicht der Wert 1000001 finden, da die Schleife ja 1000000 durchlaufen wird. Kommentiere ich die mov-Zeile aus erhalte ich den Wert 239439564. Wie kann das Wird der Rückgabewert immer aus eax gelesen?
__________________
Viele Grüsse Mike Window XP Prof SP3 Windows 7 ultimate Xprofan X2 |
|
|
|
|
|
#7 (Direktlink) |
|
Gast
Beiträge: n/a
|
Ja, ist üblich - auch XProfan bezieht den Übergabewert aus dem EAX-Register.
|
|
|
|
#8 (Direktlink) | |
|
Super-Moderator
![]() Registriert seit: 05.02.2009
Ort: Westliches NRW
Alter: 44
Beiträge: 5.094
|
Zitat:
239439564 ist ein zufälliger Wert, der sich beim Starten der Funktion in EAX befand.
__________________
Gruß, Frank ![]() Webpage http://frabbing.bplaced.net mit Freeware - Tools, Spiele und Grafiken. |
|
|
|
|
![]() |
|
| Lesezeichen |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| Neue Xpia | profanfan | Spezielles | 49 | 01.07.2009 06:34 |
| XPIA-Neuigkeiten | Frabbing | Helfer & Tools | 16 | 14.06.2009 20:00 |
| XPIA > neu | profanfan | Helfer & Tools | 10 | 30.04.2009 17:08 |
| XPIA - was brauche ich | AHT | Spezielles | 39 | 29.04.2009 16:57 |
| PC braucht mehrere Versuche zum Hochfahren | dumbid | Windows 95/98/ME/2000/NT | 3 | 16.03.2004 10:13 |