Warum diverse Compilerschalter CPU32/WIN32 und CPU64/WIN64?

Für Fragen zur Programmiersprache auf welcher Lazarus aufbaut
Socke
Lazarusforum e. V.
Beiträge: 3178
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Warum diverse Compilerschalter CPU32/WIN32 und CPU64/WIN64?

Beitrag von Socke »

Delphi-Laie hat geschrieben:Wenn allerdings diese Konstante von der "Bittigkeit" des Betriebsprogrammes bzw. des Prozessors abhängig ist, dann stehen auch die FPC-Programmierer vor der Aufgabe, mit Kompilerschaltern den richtigen Wert dafür einzustellen (eine echte Konstante ist es damit aber übrigens nicht mehr, zumindest nicht im Quelltext, im Compilat natürlich schon noch).
Außerdem würde diese Konstante, weil mit Kompilerschaltern zur Laufzeit auf den richtigen Wert gebracht (bzw. der richtige Wert ausgewählt), bei einem 32-Bit-Compilat eben auch nicht den richtigen Wert dafür liefern, wenn dieses in einer 64-Bit-Umgebung läuft. Ergänzung: Mein voriger Satz ist evtl. falsch, es kann sein, daß es nichts bringt, in einem 32-Bit-Programm in einer 64-Bit-Umgebung der Funktion "SetThreadIdealProcessor" den 64-Bit-Maximum_Processors-Wert mitzugeben. Das werde ich noch versuchen herauszufinden.
Eine Konstante zeichnet sich für mich dadurch aus, dass sie nicht geändert werden kann. Ob sie auf einer anderen Architektur einen anderen Wert hat ist dabei nebensächlich. Viel mehr hilft soetwas doch dabei, plattformunabhängigen Anwendungscode zu schreiben, da man dann nicht für jede Architektur eine andere Konstante verwenden muss. Die Compilerschalter wirken übrigens vor dem eigentlichen Übersetzen des Programmquelltextes in Assembler.
Ich möchte jetzt einmal anzweifeln, dass SetThreadIdealProcessor unter WoW sich anders verhält als wenn es auf einem nativen 32bit-Windows ausgeführt wird. Falls doch müssten zumindest die offiziellen Microsoft-Header eine Funktion bereitstellen, mit denen der richtige Wert ermittelt werden kann.
Delphi-Laie hat geschrieben:Prima, danke, und was für ein Glück Du doch hast, daß das schon erstmalig bearbeitet wurde! Ich warte immer noch darauf, daß mein jüngster Bugreport dort, der immerhin schon aus dem letzten Jahrzehnt stammt, überhaupt wenigstens nach außen sichtbar zur Kenntnis genommen (bzw. wahrgenommen) wird.
Das letzte Jahrzent ist ja noch gar nicht so lange her. Alle Lazarus und Free Pascal-Entwickler arbeiten nur ehrenamtlich an diesen Projekten; daher sind Antwortzeiten von einigen Wochen auch noch vollkommen in Ordnung.
P.S. Schau mal in deinen Bug-Report.
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Warum diverse Compilerschalter CPU32/WIN32 und CPU64/WIN64?

Beitrag von marcov »

Socke hat geschrieben:Edit: Ich habe mir einmal die Freiheit genommen und einen Bug-Report verfasst.
fixed
Prima, danke, und was für ein Glück Du doch hast, daß das schon erstmalig bearbeitet wurde! Ich warte immer noch darauf, daß mein jüngster Bugreport dort, der immerhin schon aus dem letzten Jahrzehnt stammt, überhaupt wenigstens nach außen sichtbar zur Kenntnis genommen (bzw. wahrgenommen) wird.
Cannot reproduce with 2.5.1.

Delphi-Laie
Beiträge: 26
Registriert: So 24. Jan 2010, 21:56

Re: Warum diverse Compilerschalter CPU32/WIN32 und CPU64/WIN64?

Beitrag von Delphi-Laie »

marcov hat geschrieben:Cannot reproduce with 2.5.1.
Hallo Marco, Du bist wohl Niederländer, der aber Hochdeutsch beherrscht. Hier müssen wir uns nicht mit dem "Insulanergermanisch" wie beim Bugtrucker quälen (für mich ist es eine leichte Qual), sondern können uns auf "Festlandsgermanisch" weiterunterhalten. Also, danke für Deine Mühe, und bitte vergib mir meinen Lapsus mit dem vergessenen Funktionsaufruf! Ich bin insofern beruhigt, als daß sich dieser Fehler auch in diesem meinen kleinen Demonstrationsprojekt in gleicher Weise zeigt, er also reproduzierbar ist.

Grüße erneut

Delphi-Laie

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: Warum diverse Compilerschalter CPU32/WIN32 und CPU64/WIN64?

Beitrag von marcov »

Delphi-Laie hat geschrieben:
marcov hat geschrieben:Cannot reproduce with 2.5.1.
Hallo Marco, Du bist wohl Niederländer, der aber Hochdeutsch beherrscht. Hier müssen wir uns nicht mit dem "Insulanergermanisch" wie beim Bugtrucker quälen (für mich ist es eine leichte Qual), sondern können uns auf "Festlandsgermanisch" weiterunterhalten. Also, danke für Deine Mühe, und bitte vergib mir meinen Lapsus mit dem vergessenen Funktionsaufruf! Ich bin insofern beruhigt, als daß sich dieser Fehler auch in diesem meinen kleinen Demonstrationsprojekt in gleicher Weise zeigt, er also reproduzierbar ist.
Haha, ich war vom Thread nach Bugtracker und dann zurück nach Thread gegangen. War noch im Angelen und Saksen Modus :-)

Delphi-Laie
Beiträge: 26
Registriert: So 24. Jan 2010, 21:56

Re: Warum diverse Compilerschalter CPU32/WIN32 und CPU64/WIN64?

Beitrag von Delphi-Laie »

Und, Marco, fandest Du schon Zeit und Gelegenheit, meiner Fehlermeldung nachzugehen? Konntest Du diesen Fehler womöglich selbst auf Deinem Computer (mit meinem Compilat) feststellen?

Gruß Delphi-Laie

Antworten