Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Offtopic Themen bitte hier hinein.
Benutzeravatar
Wuerfel_21
Beiträge: 57
Registriert: Di 21. Jan 2020, 19:20

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von Wuerfel_21 »

yeti hat geschrieben: Di 14. Mär 2023, 20:20
Wer noch nicht mit FlexSPIN, -BASIC und -C im Bytecode-Modus gespielt hat sollte sich das mal ansehen. OpenSpin könnte obsolet werden, zumindest solange kein OpenSpin-fehlerkompatibler Compiler benötigt wird.
Um was für OpenSpin-spezifische Eigenheiten handelt es sich denn? Wenn irgendwas in flexspin nicht passt, wird es passend gemacht (fast alle Eigenheiten des Original-PropellerTool-Kompilers sollten unterstützt sein, besonders im BC-Modus. Das einzige was nicht funktionieren sollte und kein Fehler ist, ist Code der sich selbst modifiziert (gezwungenermaßen mit festen offsets in PBASE).

Man beachte auch die Spin2-ismen, die auch für Spin1/P1 unterstützt sind. z.B. die Möglichkeit, Konstanten in Unterobjekten zu überschreiben.
Benutzeravatar
yeti
Beiträge: 2335
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Bloß nich...

Im Umfeld des Versuches TriOS mit OpenSpin zu bauen tauchten Unterschiuede zwischen OpenSpin und BSTC auf, die man nun wirklich nicht in FlexSpin haben will.

Fehlerkompatibel sollte meinen "kompiliert gewisse Dinge gar nicht". Z.B. zuviele Funktionen, zuviele IF/ELSE/...

BSTC konnte das teils umschiffen weil erst Unbenutztes rausgeschmissen wurde und OpenSpin sich erst weigerte und danach optimiert hätte (wenn ich das richtig verstand).
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
Wuerfel_21
Beiträge: 57
Registriert: Di 21. Jan 2020, 19:20

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von Wuerfel_21 »

FlexSpin hat eigentlich keine Limits dergleichen. Nicht benutze Funktionen werden gar nicht erst kompiliert. Und Konstrukte in der Funktion sollten sich unendlich verschachteln lassen (naja, irgendwann läuft der Systemstack dir über... 8MB auf Linux, nur 1MB auf Windows...)

BSTC hat teils... interessante Fehler. Wer versuchen würde Spin Hexagon (was zwar auf flexspin LLM gedacht ist..) mit BSTC zu kompilieren, würde nicht glücklich werden (aber auch nicht mit Homespun). Siehe hier: https://forums.parallax.com/discussion/ ... r-shootout
Benutzeravatar
yeti
Beiträge: 2335
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Und BST(C) gibt's nur binär und wird irgendwann auf keinem aktuellen OS mehr laufen. Diesen Mist hab ich mit anderen Compilern bzw Microcontrollern schon hinter mir, weil manch Projekt sich zu sehr an eine bestimmte GCC-Version kettete.

Spatz geht anders.
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
Wuerfel_21
Beiträge: 57
Registriert: Di 21. Jan 2020, 19:20

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von Wuerfel_21 »

Och ja, und XMM... Das wär was. Auf P2-Seite hätte das auch vertretbare Performance dank Streamer-DMA. Nicht sicher wie das wohl am besten zu implementieren ist. Ich glaube die implementation in GCC cache-t einfach gleich große Blöcke und führt sie aus. Und ich glaube ohne FCACHE, da das ja nicht einfach so aufzuteilen ist. P2 ist ja kein reines RISC und hat diese Probleme auch von Haus aus (liebe grüße von AUGS und SETQ. Lässt sich vielleicht lösen, wenn man diese Konstrukte alle auf 64-bit alignt). Und einzelne kleine Transfers leiden eher unter Latenz... Andererseits ist mein 68000-Emulator ja eigentlich auch nur XMM auf Umwegen. Und der läuft auch noch gut, wenn er (siehe NeoYume-Spaghetti) nur indirekt an den Bus kann und evtl eine Weile warten muss, bis der andere Cog den Interrupt wahrnimmt. Da werden 16 Instruktionswörter (=32 byte) gequeuet, wann immer der PC den aktuellen Bereich verlässt. Und genau von da an. Hat den Nachteil, dass man sich mit den ollen DRAM-Zeilen rumschlagen muss, da der Bereich ja über eine Zeilengrenze gehen könnte.
Benutzeravatar
yeti
Beiträge: 2335
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

---------8<-----{20230812-1633-UTC}----->8----------

Ich seh PSRAM in SPIN2CPPs Changelog erwhähnt...

Verpaß ich Nur-P1-Benutzer da grad bahnbrechende Neuerungen oder ist das nur für P2-Leute interessant?

---------8<-----{20230812-1802-UTC}----->8----------

Code: Alles auswählen

(yeti@kumari:6)/opt/propellertools/src$ grep -ilr psram totalspectrum__spin2cpp
totalspectrum__spin2cpp/include/spin/psram.spin2
totalspectrum__spin2cpp/include/spin/psram4drv-dualCE.spin2
totalspectrum__spin2cpp/include/spin/psram16drv.spin2
totalspectrum__spin2cpp/include/spin/hypermemory.spin2
totalspectrum__spin2cpp/include/spin/psram8drv.spin2
totalspectrum__spin2cpp/COPYING.LIB
totalspectrum__spin2cpp/.git/index
totalspectrum__spin2cpp/.git/objects/pack/pack-abe8ee2390da035494e9e1e2df4c612e841ec062.pack
totalspectrum__spin2cpp/Changelog.txt
...also wohl nur für die P2-Fraktion.

---------8<-----{Wohl kein Happy-End.}----->8----------
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
Wuerfel_21
Beiträge: 57
Registriert: Di 21. Jan 2020, 19:20

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von Wuerfel_21 »

Is nur für ramdisk als dateisystem, keine sorge.
Benutzeravatar
yeti
Beiträge: 2335
Registriert: Fr 27. Aug 2010, 14:48
Wohnort: Wrong Planet
Kontaktdaten:

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von yeti »

Da kompiler ich mal nicht spin2cpp nach jeder neuen Änderung, die mit sowohl brav per Email im MUA als auch per RSS->NNTP im Newsreader gemeldet werden, und dann nach eben dieser längeren Pause entdecke ich eine mir neue Superkraft darin:

Code: Alles auswählen

~$ cat oiski-poiski.b 
--<-<<+[+[<+>--->->->-<<<]>]<<--.<++++++.<<-..<<.<+.>>.>>.<<<.+++.>>.>>-.<<<+.

Code: Alles auswählen

~$ flexspin oiski-poiski.b
Propeller Spin/PASM Compiler 'FlexSpin' (c) 2011-2025 Total Spectrum Software Inc. and contributors
Version 7.4.0-beta-v7.3.0-17-g2d4d4690 Compiled on: Jun 26 2025
oiski-poiski.b
oiski-poiski.pasm
Done.
Program size is 10776 bytes

Code: Alles auswählen

~$ spinsim -b115200 oiski-poiski.binary ; echo # *.b fehlt noch ein LF am Ende
Hello, World!
~$ █
... neee, neee, neeeeeee ...

Was habe ich noch verpennt?
𝖂𝖎𝖗 𝖐𝖔̈𝖓𝖓𝖊𝖓 𝖆𝖑𝖑𝖊𝖘 𝖆𝖚𝖘𝖘𝖊𝖗 𝖎𝖓 𝕱𝖗𝖚̈𝖍𝖑𝖎𝖓𝖌, 𝕾𝖔𝖒𝖒𝖊𝖗, 𝕳𝖊𝖗𝖇𝖘𝖙 𝖚𝖓𝖉 𝖂𝖎𝖓𝖙𝖊𝖗! – 𝕯𝖊𝖚𝖙𝖘𝖈𝖍𝖑𝖆𝖓𝖉.
"Du willst hier nicht klicken. Dies interessiert Dich nicht." — Yeti.
"DNA is a four letter word!" — Yeti.
Benutzeravatar
PIC18F2550
Beiträge: 2852
Registriert: Fr 30. Sep 2011, 13:08

Re: Spin2CPP, FlexSpin, FlexCC, FlexProp (PASM, Spin, BASIC, C)

Beitrag von PIC18F2550 »

Wie?

Kann ee jerzt auch Brainfuck?
😁
Gruß
PIC18F2550

drone265/278
Barbarus hic ergo sum, quia non intellegor ulli.
Ein Barbar bin ich hier, da ich von keinem verstanden werde.
ʎɐqǝ ıǝq ɹnʇɐʇsɐʇ ǝuıǝ ɹǝpǝıʍ ǝıu ǝɟnɐʞ ɥɔı ´uuɐɯ ɥo
Antworten