Deutsch
Assembler Forum

Vorschläge & FPU Unterstützung

 
- Seite 1 -



Uwe
''Pascal''
Niemeier
Hallo Frank!

Das Teil ist noch nicht draussen und ich habe schon die ersten Verbesserungsvorschläge :

Wird es eine Art Testmodus geben mit der Möglichkeit, ein hängengebliebenes Programm einfach aus dem Speicher zu schmeissen? (So was wie der Totenkopf-Button bei ProfASM)
Zumindest ich könnte sowas gut gebrauchen

Und vielleicht könntest du den ASM-CrashKurs bei Gelegenheit um ein paar Beispiele mit FPU-Funktionen ergänzen? Das wird doch sicher von XPIA unterstützt? Gerade in Sachen Geschwindigkeit wäre das doch ein gutes Einsatzgebiet.

Bin gespannt...
Pascal
 
26.06.2004  
 



« Dieser Beitrag wurde als Lösung gekennzeichnet. »


p.specht

Bezüglich Sinus- und Cosinusfunktionen ist die FPU durchaus hurtig unterwegs. Anbei die Codierung der FPU- F-Befehle des Intel-Chipsatzes. Inzwischen kann aber auch die SSE-4-SIMD-Unit viele dieser Befehle.
cls
var FPU_INSTRUCTIONS$="\
D9 F0;F2XM1\n\
D9 E1;FABS\n\
D8 /0;FADD m32fp\n\
DC /0;FADD m64fp\n\
D8 C0+i;FADD ST(0), ST(i)\n\
DC C0+i;FADD ST(i), ST(0)\n\
DE C0+i;FADDP ST(i), ST(0)\n\
DE C1;FADDP\n\
DA /0;FIADD m32int\n\
DE /0;FIADD m16int\n\
DF /4;FBLD m80dec\n\
DF /6;FBSTP m80bcd\n\
D9 E0;FCHS\n\
9B DB E2;FCLEX\n\
DB E2;FNCLEX\n\
DA C0+i;FCMOVB ST(0), ST(i)\n\
DA C8+i;FCMOVE ST(0), ST(i)\n\
DA D0+i;FCMOVBE ST(0), ST(i)\n\
DA D8+i;FCMOVU ST(0), ST(i)\n\
DB C0+i;FCMOVNB ST(0), ST(i)\n\
DB C8+i;FCMOVNE ST(0), ST(i)\n\
DB D0+i;FCMOVNBE ST(0), ST(i)\n\
DB D8+i;FCMOVNU ST(0), ST(i);avaliable if CPUID´s  CMOV and FPU feature bits are set\n\
D8 /2;FCOM m32fp\n\
DC /2;FCOM m64fp\n\
D8 D0+i;FCOM ST(i)\n\
D8 D1;FCOM\n\
D8 /3;FCOMP m32fp\n\
DC /3;FCOMP m64fp\n\
D8 D8+i;FCOMP ST(i)\n\
D8 D9;FCOMP\n\
DE D9;FCOMPP\n\
DB F0+i;FCOMI ST, ST(i)\n\
DF F0+i;FCOMIP ST, ST(i)\n\
DB E8+i;FUCOMI ST, ST(i)\n\
DF E8+i;FUCOMIP ST, ST(i)\n\
D9 FF;FCOS\n\
D9 F6;FDECSTP\n\
D8 /6;FDIV m32fp\n\
DC /6;FDIV m64fp\n\
D8 F0+i;FDIV ST(0), ST(i)\n\
DC F8+i;FDIV ST(i), ST(0)\n\
DE F8+i;FDIVP ST(i), ST(0)\n\
DE F9;FDIVP\n\
DA /6;FIDIV m32int\n\
DE /6;FIDIV m16int\n\
D8 /7;FDIVR m32fp\n\
DC /7;FDIVR m64fp\n\
D8 F8+i;FDIVR ST(0), ST(i)\n\
DC F0+i;FDIVR ST(i), ST(0)\n\
DE F0+i;FDIVRP ST(i), ST(0)\n\
DE F1;FDIVRP\n\
DA /7;FIDIVR m32int\n\
DE /7;FIDIVR m16int\n\
DD C0+i;FFREE ST(i)\n\
DE /2;FICOM m16int\n\
DA /2;FICOM m32int\n\
DE /3;FICOMP m16int\n\
DA /3;FICOMP m32int\n\
DF /0;FILD m16int\n\
DB /0;FILD m32int\n\
DF /5;FILD m64int\n\
D9 F7;FINCSTP\n\
9B DB E3;FINIT\n\
DB E3;FNINIT\n\
DF /2;FIST m16int\n\
DB /2;FIST m32int\n\
DF /3;FISTP m16int\n\
DB /3;FISTP m32int\n\
DF /7;FISTP m64int\n\
DF /1;FISTTP m16int\n\
DB /1;FISTTP m32int\n\
DD /1;FISTTP m64int\n\
D9 /0;FLD m32fp\n\
DD /0;FLD m64fp\n\
DB /5;FLD m80fp\n\
D9 C0+i;FLD ST(i); pushing register ST(0) duplicates the stack top\n\
D9 E8;FLD1\n\
D9 E9;FLDL2T\n\
D9 EA;FLDL2E\n\
D9 EB;FLDPI\n\
D9 EC;FLDLG2\n\
D9 ED;FLDLN2\n\
D9 EE;FLDZ\n\
D9 /5;FLDCW m2byte; Loads the 16-bit source operand into the FPU control word. Clear any pending exceptions!\n\
D9 /4;FLDENV m14/28byte\n\
D8 /1;FMUL m32fp\n\
DC /1;FMUL m64fp\n\
D8 C8+i;FMUL ST(0), ST(i)\n\
DC C8+i;FMUL ST(i), ST(0)\n\
DE C8+i;FMULP ST(i), ST(0)\n\
DE C9;FMULP\n\
DA /1;FIMUL m32int\n\
DE /1;FIMUL m16int\n\
D9 D0;FNOP\n\
D9 F3;FPATAN\n\
D9 F8;FPREM\n\
D9 F5;FPREM1\n\
D9 F2;FPTAN\n\
D9 FC;FRNDINT\n\
DD /4;FRSTOR m94/108byte\n\
9B DD /6;FSAVE m94/108byte\n\
DD /6;FNSAVE m94/108byte\n\
D9 FD;FSCALE\n\
D9 FE;FSIN\n\
D9 FB;FSINCOS\n\
D9 FA;FSQRT\n\
D9 /2;FST m32fp\n\
DD /2;FST m64fp\n\
DD D0+i;FST ST(i)\n\
D9 /3;FSTP m32fp\n\
DD /3;FSTP m64fp\n\
DB /7;FSTP m80fp\n\
DD D8+i;FSTP ST(i)\n\
9B D9 /7;FSTCW m2byte\n\
D9 /7;FNSTCW m2byte\n\
9B D9 /6;FSTENV m14_28byte\n\
D9 /6;FNSTENV m14_28byte\n\
9B DD /7;FSTSW m2byte\n\
9B DF E0;FSTSW AX\n\
DD /7;FNSTSW m2byte\n\
DF E0;FNSTSW AX\n\
D8 /4;FSUB m32fp\n\
DC /4;FSUB m64fp\n\
D8 E0+i;FSUB ST(0), ST(i)\n\
DC E8+i;FSUB ST(i), ST(0)\n\
DE E8+i;FSUBP ST(i), ST(0)\n\
DE E9;FSUBP\n\
DA /4;FISUB m32int\n\
DE /4;FISUB m16int\n\
D8 /5;FSUBR m32fp\n\
DC /5;FSUBR m64fp\n\
D8 E8+i;FSUBR ST(0), ST(i)\n\
DC E0+i;FSUBR ST(i), ST(0)\n\
DE E0+i;FSUBRP ST(i), ST(0)\n\
DE E1;FSUBRP\n\
DA /5;FISUBR m32int\n\
DE /5;FISUBR m16int\n\
D9 E4;FTST\n\
DD E0+i;FUCOM ST(i)\n\
DD E1;FUCOM\n\
DD E8+i;FUCOMP ST(i)\n\
DD E9;FUCOMP\n\
DA E9;FUCOMPP\n\
D9 E5;FXAM\n\
D9 C8+i;FXCH ST(i)\n\
D9 C9;FXCH; Exmpl:FXCH ST(3):FSQRT:FXCH ST(3)\n\
D9 F4;FXTRACT\n\
D9 F1;FYL2X\n\
D9 F9;FYL2XP1\n\
;; NP 0F AE /1   FXRSTOR m512byte\n\
;; NP REX.W + 0F AE /1  FXRSTOR64 m512byte\n\
;; NP 0F AE /0   FXSAVE m512byte\n\
;; NP REX.W + 0F AE /0     FXSAVE64 m512byte Rem Bytes 464:511 are available to software use.\n\
;; Op/En Operand_1 Operand_2 Operand_3 Operand_4 \n\
;;  M         ModRM:r/m (r\w)      NA               NA               NA"
print FPU_INSTRUCTIONS$
Waitinput
 
Computer: Gerät, daß es in Mikrosekunden erlaubt, 50.000 Fehler zu machen, zB 'daß' statt 'das'...
29.11.2020  
 




Frank
Abbing
Hi,

> Wird es eine Art Testmodus geben mit der Möglichkeit, ein hängengebliebenes Programm einfach aus dem Speicher zu schmeissen?
> (So was wie der Totenkopf-Button bei ProfASM)
> Zumindest ich könnte sowas gut gebrauchen

Oh, war mir noch nie aufgefallen.
Wie hast du den Abbruch denn realisiert ?

> Und vielleicht könntest du den ASM-CrashKurs bei Gelegenheit um ein paar Beispiele mit FPU-Funktionen ergänzen? Das wird
> doch sicher von XPIA unterstützt?

Ja, die komplette MASM Syntax wird unterstützt.

> Gerade in Sachen Geschwindigkeit wäre das doch ein gutes Einsatzgebiet.

Ja, du hast recht.
Allerdings hab ich selber doch keine grosse Erfahrung mit den FPU Befehlen. Aber fühl dich frei und erstelle ruhig ein paar Beispiele.

Der Kursus sollte eigentlich Quer-Einsteiger in Assembler einführen. Zu einer Basiseinführung sind die FPU Befehle aber doch zu komplex.
 
26.06.2004  
 




Uwe
''Pascal''
Niemeier
Hallo Frank!

[quote:505c2da98a]Oh, war mir noch nie aufgefallen.
Wie hast du den Abbruch denn realisiert ?[/quote:505c2da98a]
Der Interpreter wurde per CreateProcess aufgerufen und im Bedarfsfall (Pointerfehler usw.) per TerminateProcess abgeschossen.
Bei XPIA müsste man da wohl den Interpreteraufruf der IDE irgendwie redirecten, wie man so schön sagt.

[quote:505c2da98a]Aber fühl dich frei und erstelle ruhig ein paar Beispiele[/quote:505c2da98a]
Frei fühle ich mich, aber nicht fähig...

Vielleicht werde ichs trotzdem irgendwann mal versuchen; könnte eigendlich ein paar schnelle Sinusberechnungen brauchen...

SeeYou
Pascal
 
27.06.2004  
 




Frank
Abbing
Hi.

> Der Interpreter wurde per CreateProcess aufgerufen und im Bedarfsfall (Pointerfehler usw.) per TerminateProcess abgeschossen.
> Bei XPIA müsste man da wohl den Interpreteraufruf der IDE irgendwie redirecten, wie man so schön sagt.

Ok, die ganze Compilergeschichte übernimmt ja der XPSE.
XPIA übernimmt das reine Umwandeln in Maschinensprache und die Integrierung in den Profancode, die Drecksarbeit macht der XPSE (Includes zusammen führen, Kommentare entfernen, usw.).

> Frei fühle ich mich, aber nicht fähig...
>
> Vielleicht werde ichs trotzdem irgendwann mal versuchen; könnte eigendlich ein paar schnelle Sinusberechnungen brauchen...

Ja, ist doch ziemlich komplex, die FPU Geschichte. Und allemal einen Extrakurs wert.
 
27.06.2004  
 



Uwe Pascal Niemeier

...könnte eigendlich ein paar schnelle Sinusberechnungen brauchen...

SeeYou
Pascal


da hilft aber googlen.

Tipps gibts in allen Programmiersprachen. Irgendwo hatte ich eine Sinusfunktion gesehen, die mit einer riesigen Tabelle daherkam. Superschnell.

Auf meiner Platte aber momentan nicht auffindbar (bei nur 650.000 Dateien eigentlich unverständlich).

MfG
Michael Wodrich
 
29.06.2004  
 



Genau, mit Tabellen läßt sich einiges beschleunigen. Man tauscht sozusagen Speicher in Rechenlast. Teilweise arbeitet so auch die PSA3D, mein 3D-Renderer, dieser legt vor der Arbeit glaube 1-2MB Pointer an, gefüllt mit vorrausgerechneten Ergebnissen. Es geht halt natürlich zu Lasten der Genauigkeit, aber das lässt sich ja kalibrieren.

iF
 
29.06.2004  
 




Frank
Abbing
Hi,

ich benutze z.B. in der ProSpeed auch vorberechnete Sinustabellen.
Das hat den enormen Vorteil, nur mit Ganzzahlen arbeiten zu können. Ist schneller und einfacher.
Hier meine Tabellen, in ein Grad Schritten. Den Multiplikationsfaktor weiß ich aber nicht mehr, ich meine er ist 1024.


sinus dd 17,35,53,71,89,107,124,142,160,177,195,212,230,247,265,282,299,316,333,350,367,383,400,416,432,448,464,480
dd 496,512,527,542,557,572,587,601,616,630,644,658,671,685,698,711,724,736,748,761,772,784,795,807,817,828
dd 838,849,858,868,877,886,895,904,912,920,928,935,942,949,956,962,968,973,979,984,989,993,997,1001,1005,1008
dd 1011,1014,1016,1018,1020,1021,1022,1023,1023,1023,1023,1023,1022,1021,1020,1018,1016,1013,1011,1008,1005
dd 1001,997,993,989,984,979,973,968,962,955,949,942,935,927,920,912,903,895,886,877,868,858,848,838,828,817
dd 806,795,784,772,760,748,736,723,711,698,684,671,657,644,630,615,601,587,572,557,542,527,511,496,480,464
dd 448,432,416,399,383,366,349,332,316,298,281,264,247,229,212,194,177,159,142,124,106,88,70,53,35,17,0,-18
dd -36,-54,-71,-89,-107,-125,-143,-160,-178,-195,-213,-230,-248,-265,-282,-299,-316,-333,-350,-367,-384,-400
dd -417,-433,-449,-465,-481,-496,-512,-527,-543,-558,-573,-587,-602,-616,-630,-644,-658,-672,-685,-698,-711
dd -724,-737,-749,-761,-773,-784,-796,-807,-818,-828,-839,-849,-859,-868,-878,-887,-895,-904,-912,-920,-928
dd -935,-942,-949,-956,-962,-968,-974,-979,-984,-989,-993,-997,-1001,-1005,-1008,-1011,-1014,-1016,-1018,-1020
dd -1021,-1022,-1023,-1023,-1023,-1023,-1023,-1022,-1021,-1020,-1018,-1016,-1013,-1011,-1008,-1005,-1001,-997
dd -993,-988,-984,-979,-973,-967,-961,-955,-949,-942,-935,-927,-920,-912,-903,-895,-886,-877,-867,-858,-848
dd -838,-827,-817,-806,-795,-783,-772,-760,-748,-735,-723,-710,-697,-684,-671,-657,-643,-629,-615,-601,-586
dd -571,-556,-541,-526,-511,-495,-479,-464,-448,-431,-415,-399,-382,-366,-349,-332,-315,-298,-281,-264,-246
dd -229,-211,-194,-176,-159,-141,-123,-106,-88,-70,-52,-34,-16,0

cosinus dd 1023,1023,1022,1021,1020,1018,1016,1014,1011,1008,1005,1001,997,993,989,984,979,973,968,962,955,949,942
dd 935,928,920,912,904,895,886,877,868,858,848,838,828,817,806,795,784,772,760,748,736,723,711,698,685,671
dd 658,644,630,616,601,587,572,557,542,527,511,496,480,464,448,432,416,399,383,366,350,333,316,299,282,264
dd 247,230,212,195,177,159,142,124,106,89,71,53,35,17,0,-18,-35,-53,-71,-89,-107,-125,-142,-160,-178,-195
dd -213,-230,-248,-265,-282,-299,-316,-333,-350,-367,-383,-400,-416,-433,-449,-465,-481,-496,-512,-527,-542
dd -557,-572,-587,-602,-616,-630,-644,-658,-672,-685,-698,-711,-724,-736,-749,-761,-773,-784,-796,-807,-818
dd -828,-839,-849,-859,-868,-877,-887,-895,-904,-912,-920,-928,-935,-942,-949,-956,-962,-968,-974,-979,-984
dd -989,-993,-997,-1001,-1005,-1008,-1011,-1014,-1016,-1018,-1020,-1021,-1022,-1023,-1023,-1023,-1023,-1023
dd -1022,-1021,-1020,-1018,-1016,-1013,-1011,-1008,-1005,-1001,-997,-993,-988,-984,-979,-973,-968,-962,-955
dd -949,-942,-935,-927,-920,-912,-903,-895,-886,-877,-868,-858,-848,-838,-828,-817,-806,-795,-784,-772,-760
dd -748,-736,-723,-710,-697,-684,-671,-657,-643,-629,-615,-601,-586,-572,-557,-542,-526,-511,-495,-480,-464
dd -448,-432,-415,-399,-382,-366,-349,-332,-315,-298,-281,-264,-247,-229,-212,-194,-177,-159,-141,-124,-106
dd -88,-70,-52,-34,-17,0,18,36,54,72,90,107,125,143,160,178,196,213,231,248,265,283,300,317,334,350,367,384
dd 400,417,433,449,465,481,497,512,528,543,558,573,588,602,616,631,645,658,672,685,699,711,724,737,749,761,773
dd 784,796,807,818,828,839,849,859,868,878,887,896,904,912,920,928,935,942,949,956,962,968,974,979,984,989,993
dd 997,1001,1005,1008,1011,1014,1016,1018,1020,1021,1022,1023,1023,1023
 
29.06.2004  
 




Frank
Abbing
Hi Pascal,

hab mich mal hingesetzt und einen Sourcecode gemacht, der die FPU benutzt.
Ein Suchalgorhythmus, der aus einem Array mit Fließkommazahlen die höchste und die niedrigste Zahl findet. Natürlich vorzeichenbehaftet, also auch bei negativen Zahlen !
Ist ziemlich schnell. Ein Array mit 250000 Floats (viel mehr unterstützt Profan auch gar nicht) wurde in 204 Millisekunden durchsucht. Hat sogar mich erstaunt, obwohl der Code nicht mal optimiert ist...
KompilierenMarkierenSeparieren
Sucht die höchste und die niedrigste Zahl aus einem Array mit Fließkommazahlen.
 {$cleq}
Declare anzahl&
Anzahl Fließkommazahlen im Array
anzahl&=25
Declare Tabelle_1![anzahl&],Tabelle_2![2],x&,y&,z&,text$
Window 0,0-%maxx,%maxy
Randomize
Zufällige Fließkommazahlen
generieren.

Whileloop anzahl&

    Tabelle_1![&loop-1]=Rnd(100000)/1.09-50000

EndWhile

Assemblerfunktions-Parameters:  Adresse von Tabelle mit Floats, Adresse von Zieltabelle, Anzahl Floats

AsmStart FindEdge

    Parameters addr(Tabelle_1![0]),addr(Tabelle_2![0]),anzahl&,0
    jmp weiter
    flo1    dq  0
    flo2    dq  0
    weiter:
    ; höchste Zahl ermitteln
    ;
    mov  edx,para1
    mov  ecx,para3
    lea  ebx,flo1
    mov  eax,[edx]
    mov  [ebx],eax
    mov  eax,[edx+4]
    mov  [ebx+4],eax
    schleifei:
    lea  ebx,flo2
    mov  eax,[edx]
    mov  [ebx],eax
    mov  eax,[edx+4]
    mov  [ebx+4],eax
    push ecx
    push edx
    fld  flo2
    fcomp  flo1
    fnstsw ax
    shr  ah,1
    jc   is_less
    is_more:
    pop  edx
    pop  ecx
    lea  ebx,flo1
    mov  eax,[edx]
    mov  [ebx],eax
    mov  eax,[edx+4]
    mov  [ebx+4],eax
    jmp  is_ready
    is_less:
    pop  edx
    pop  ecx
    is_ready:
    add  edx,8
    sub  ecx,1
    jne  schleifei
    mov  edx,para2
    lea  ebx,flo1
    mov  eax,[ebx]
    mov  [edx],eax
    mov  eax,[ebx+4]
    mov  [edx+4],eax
    ; niedrigste Zahl ermitteln
    ;
    mov  edx,para1
    mov  ecx,para3
    lea  ebx,flo1
    mov  eax,[edx]
    mov  [ebx],eax
    mov  eax,[edx+4]
    mov  [ebx+4],eax
    xschleifei:
    lea  ebx,flo2
    mov  eax,[edx]
    mov  [ebx],eax
    mov  eax,[edx+4]
    mov  [ebx+4],eax
    push ecx
    push edx
    fld  flo2
    fcomp  flo1
    fnstsw ax
    shr  ah,1
    jc   xis_less
    xis_more:
    pop  edx
    pop  ecx
    jmp  xis_ready
    xis_less:
    pop  edx
    pop  ecx
    lea  ebx,flo1
    mov  eax,[edx]
    mov  [ebx],eax
    mov  eax,[edx+4]
    mov  [ebx+4],eax
    xis_ready:
    add  edx,8
    sub  ecx,1
    jne  xschleifei
    mov  edx,para2
    lea  ebx,flo1
    mov  eax,[ebx]
    mov  [edx+8],eax
    mov  eax,[ebx+4]
    mov  [edx+12],eax

AsmEnd

Whileloop anzahl&

    Print Tabelle_1![&loop-1]

EndWhile

Print
Print Höchste Zahl aus dem Array    = +Str$(Tabelle_2![0])
Print Niedrigste Zahl aus den Array = +Str$(Tabelle_2![1])
WaitInput
End
 
16.07.2004  
 



Frank, Du bist ein Schatz.

Genau das meinte ich doch (irgendwann einmal).

Meine Idee, vielleicht mit anderen Worten:

Wenn Du z.B. in eine TXT namens XPIA.PROCS alle solch supergailen megafäääst Prozeduren reinschreiben würdest, könnte XPSE einfach dafür sorgen, das z.B. der progger einfach nur FindEdge schreiben muß, xpse den Code an die richtig stelle tütteln würde, XPIA daraus Profan macht, und taraaa, Profan hätte einen Befehlsumfang hoch Neune mit superschnellen Prozeduren. XPIA-Procs halt.

Der Vorteil für den Progger wäre halt, das er nicht erst Assembler selbst einbauen müsste (was den code nicht umbedingt übersichtlich gestaltet ) sondern er einfach neue Befehle hat, die Dank XPIA umgewandelt werden.

 
16.07.2004  
 




Frank
Abbing
Hi,

gute Idee, ja !
Wie schon erwähnt kann jeder seine genialen Profan/Assembler Codes an mir schicken.
Ich werde die Routinen gerne in eine Datei packen oder dir zuschicken, damit du XPSE in dieser Hinsicht erweitern kannst.
Eine kleine Hilfe zu jeder Funktion müßte natürlich dabei sein.
 
16.07.2004  
 



Lööl Frank viel einfacher, brauchst mir garnet zuschicken!!!

Dein XPIA bringt ne Datei mitsich (/XPIA/XPIA.PROCS), die sieht so aus:
KompilierenMarkierenSeparieren
Soooo easy.

XPSE schaut schnell in das File, liest die 2. Zeile, hat also ein Inhaltsverzeichnis, und wird zuordnen, dann bekommt Dein XPIA einfach den fertigen Code wie immer, trallaaali....

Das heißt Du kannst völlig Frei und unabhängig vom XPSE entscheiden, welchen Funktionsumfang Du zum XPIA mitliefern möchtest. XPSE kümmert sich schon...

iF
 
17.07.2004  
 




Frank
Abbing
Hi,

das wird so leider nicht gehen, da der Assemblerblock auch die Parameter und Rückgabewert übergibt, die aber bei jedem Programm anders sind:
KompilierenMarkierenSeparieren
AsmStart Funktionsname

    Parameters x&,addr(text$),bereich#
    Return z&
    ...

AsmEnd


Ich werd mal was überlegen...
 
17.07.2004  
 




Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

6.032 Betrachtungen

Unbenanntvor 0 min.
p.specht15.09.2021
ByteAttack21.01.2021
Thomas Zielinski15.12.2020
R.Schneider09.12.2020
Mehr...

Themeninformationen



Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie