For Schleife mit Quad

Für allgemeine Fragen zur Programmierung mit PureBasic.
topsoft
Beiträge: 67
Registriert: 16.09.2004 11:55
Wohnort: nrw

For Schleife mit Quad

Beitrag von topsoft »

Hallo.

Ist schon mal jemanden aufgefallen das in einer For Next Schleife der Variablentyp Quad nicht zulässig ist?
Ich habe diese Fehlermeldung gerade zum ersten mal gehabt da noch nie benötigt. Nicht wirklich schlimm.
Mir stellt sich nur die Frage warum das so ist? Auch auf 32 bit kann man ja nun mit 64 bit rechnen.
Wahrscheinlich einfach nicht implementiert.

Bild

Gruß
Skylake QuadCore i7 6700K @4400MHz, MSI Z170A Gaming M5, 64 GB DDR4 @ 2133MHz, B: Ramdisk 32GB, C: Raid0 SATA SSD 1TB, D: Raid0 M2 SSD 1TB, E: Raid0 HDD 8TB, 28" 4K @ RTX2080, Win10 X64
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Re: For Schleife mit Quad

Beitrag von ts-soft »

Eine longbasierte For Schleife ist ASM optimiert und schneller, darum gibt es nur eine For Schleife für Long. Für andere Werte kann man ja immer noch While Wend nutzen.
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
Sicro
Beiträge: 955
Registriert: 11.08.2005 19:08
Kontaktdaten:

Re: For Schleife mit Quad

Beitrag von Sicro »

Bei PureBasic 64-Bit funktionieren For-Next-Schleifen auch mit einer Quad-Variable.
  • 32-Bit-Prozessor/Betriebssystem: Long-Variablen (4 Bytes = 32 Bits = native Speichergröße*) am schnellsten
  • 64-Bit-Prozessor/Betriebssystem: Quad-Variablen (8 Bytes = 64 Bits = native Speichergröße*) am schnellsten
* native Speichergröße: Speichergröße, die der Prozessor direkt verarbeiten kann

Ich vermute, die PB-Entwickler verwenden die For-Next-Schleife-Befehle von der Assemblersprache (zu der PB alle PB-Codes übersetzt), die deine entdeckte Einschränkung unter 32-Bit-Prozessor/Betriebssystem hat. Bei der ASM-For-Next-Schleife wird dann nur eine Variable bis zur nativen Speichergröße unterstützt (32-Bit: maximal Long-Variable möglich, 64-Bit: maximal Quad-Variable möglich).
Bild
Warum OpenSource eine Lizenz haben sollte :: PB-CodeArchiv-Rebirth :: Pleasant-Dark (Syntax-Farbschema) :: RegEx-Engine (kompiliert RegExes zu NFA/DFA)
Manjaro Xfce x64 (Hauptsystem) :: Windows 10 Home (VirtualBox) :: Neueste PureBasic-Version
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8675
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 32 GB DDR4-3200
Ubuntu 22.04.3 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken
Kontaktdaten:

Re: For Schleife mit Quad

Beitrag von NicTheQuick »

Nutz einfach Integer anstatt Long oder Quad. Und wenn du mal über mehr als 4 Milliarden Werte iterieren willst, musst du eben While nehmen in der 32-Bit Version.
Bild
Antworten