32bit oder 64bit ?

Für Fragen von Einsteigern und Programmieranfängern...
malabarista
Beiträge: 321
Registriert: Sa 11. Jun 2016, 12:16
OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
CPU-Target: 64Bit
Wohnort: Konstanz

32bit oder 64bit ?

Beitrag von malabarista »

Ist es beim fpc möglich, vor dem Compile festzulegen, ob mein Projekt als 32bit oder als 64bit compiliert wird ?
Denn es ist problematisch, wenn auf einem 64bit-PC kein 32bit-Projekt erzeugt werden kann...

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: 32bit oder 64bit ?

Beitrag von itjump »

malabarista hat geschrieben:Ist es beim fpc möglich, vor dem Compile festzulegen, ob mein Projekt als 32bit oder als 64bit compiliert wird ?
Denn es ist problematisch, wenn auf einem 64bit-PC kein 32bit-Projekt erzeugt werden kann...

Das ist kein Problem, lade dir die 32Bit Version von Lazarus herunter, die Binary wird überall laufen, mit 64Bit Kompilaten laufen deine Anwendungen halt nicht auf 32Bit, umgekehrt ein 32Bit Kompilat aber auf eine 64Bit System unter Vernachlässigbaren Leistungsverlust.

shokwave
Beiträge: 470
Registriert: Do 15. Nov 2007, 16:58
OS, Lazarus, FPC: Win11/Ubuntu Budgie (L 3.0 FPC 3.2.2)
CPU-Target: i386, x64
Wohnort: Gera

Re: 32bit oder 64bit ?

Beitrag von shokwave »

malabarista hat geschrieben:Ist es beim fpc möglich, vor dem Compile festzulegen, ob mein Projekt als 32bit oder als 64bit compiliert wird ?
Denn es ist problematisch, wenn auf einem 64bit-PC kein 32bit-Projekt erzeugt werden kann...

Hallo,
aus meiner Erfahrung kann ich sagen das es zwar möglich ist, aber das System dafür vorzubereiten nicht ganz so einfach.

Unter Windows ging es noch am einfachsten, da musste ich nur den FPC 2x bauen. 1x für 32bit und 1x für 64 bit(Googlestichworte: FPC CPU_TARGET=). Beide innerhalb der selben Verzeichnisstruktur(Unterverzeichnisse für die beiden Architekturen werden automatisch angelegt). Am Ende hab ich die ppcx64.exe ins gleiche Verzeichnis gepackt wie die ppc386.exe und die fpc.exe aus diesem Verzeichnis auch zum erstellen genommen.

Unter Linux sollte es im Prinzip genauso funktionieren, das Problem an dem ich schließlich gescheitert bin, war das die benötigten libraries (X11, libc...) auf dem System nur in 64bit vorlagen und deshalb das linken nicht funktionierte. Wenn du eine Distro hast, bei der beide Arten von Libs mitgeliefert werden oder du herausfindest welche Pakete nachinstalliert werden müssen, sollte es klappen.
Alternativ kannst du auf einem 64bit Linux noch ein 32bit Linux in einer VM installieren.

Hoffe das hilft dir weiter.
mfg Ingo

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: 32bit oder 64bit ?

Beitrag von Mathias »

Unter Windows würde ich 32Bit nehmen, da sind WinXP-System noch recht verbreitet, und dies laufen mit 32Bit.
Ich denke kaum, das wir Hobby-Programmierer eine Anwendung schreiben, welche zwingend 64Bit braucht.

Unter Linux sieht dies anders aus, da werden die meisten eine 64Bit-Version haben.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

marcov
Beiträge: 1100
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: 32bit oder 64bit ?

Beitrag von marcov »

Mathias hat geschrieben:Unter Windows würde ich 32Bit nehmen, da sind WinXP-System noch recht verbreitet, und dies laufen mit 32Bit.


https://en.wikipedia.org/wiki/Windows_X ... 64_Edition

Windows Services und Plugins (zu 64-bit Programme) benutzen unbedingt 64-bit. Ein bisschen Dataset in Speicher laden kann auch schon mehr als 2 GB nutzen.

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: 32bit oder 64bit ?

Beitrag von compmgmt »

marcov hat geschrieben:
Mathias hat geschrieben:Unter Windows würde ich 32Bit nehmen, da sind WinXP-System noch recht verbreitet, und dies laufen mit 32Bit.


https://en.wikipedia.org/wiki/Windows_X ... 64_Edition


"Die Windows XP „x64 Edition“ (Codename „Anvil“) ist eine Version, die ausschließlich für Prozessoren mit AMD64- oder Intel-64-Erweiterung entwickelt wurde. Sie läuft nicht auf 64-Bit-Prozessoren anderer Hersteller und ist ähnlich Windows XP Professional, basiert aber auf dem Kernel von Windows Server 2003 und besitzt somit eine modernere Basis (NT 5.2)." (https://de.wikipedia.org/wiki/Microsoft ... 64_Edition)

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: 32bit oder 64bit ?

Beitrag von Mathias »

https://en.wikipedia.org/wiki/Windows_X ... 64_Edition

Dieses System wurde noch seltener gesehen als Linux. Ich kannte nur eine Software welches dieses vorausgesetzte, das war FarCry 1, aber auch nur mit einem Patch, welcher bessere Grafik versprach.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

marcov
Beiträge: 1100
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: 32bit oder 64bit ?

Beitrag von marcov »

Mathias hat geschrieben:
https://en.wikipedia.org/wiki/Windows_X ... 64_Edition

Dieses System wurde noch seltener gesehen als Linux. Ich kannte nur eine Software welches dieses vorausgesetzte, das war FarCry 1, aber auch nur mit einem Patch, welcher bessere Grafik versprach.


FPC win64 ist darauf entwickelt. Florian hat(te?) ein Lizenz. Es gab glaub ich nur retail Lizenzen, und nicht einfach zu bekommen.

Ich bin erst mit Vista eingestiegen. (konnte man auch einfach 64-bit OEM Lizenzen kaufen. Ich glaube ich habe für mein Home Premium damals Eur109 gezahlt)

Mathias
Beiträge: 6162
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: 32bit oder 64bit ?

Beitrag von Mathias »

FPC win64 ist darauf entwickelt. Florian hat(te?) ein Lizenz.

Für die Win Plattform gab es dazumal kaum eine Alternative.
Das sieht man wieder, wie fortschrittlich FPC war(ist), das sie dazumal schon die Mühe gaben, für Win64 zu entwickeln, :wink:
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Re: 32bit oder 64bit ?

Beitrag von Christian »

Das ist kein Problem, lade dir die 32Bit Version von Lazarus herunter, die Binary wird überall laufen, mit 64Bit Kompilaten laufen deine Anwendungen halt nicht auf 32Bit, umgekehrt ein 32Bit Kompilat aber auf eine 64Bit System unter Vernachlässigbaren Leistungsverlust.


umgedreht. 64bit ist langsamer.
Du hast (nur) zugriff auf maximal 3,5Gb Speicher
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: 32bit oder 64bit ?

Beitrag von itjump »

Ja, selbst 1Gb voll zu bekommen stellt einen aber schon vor Herausforderungen

marcov
Beiträge: 1100
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: 32bit oder 64bit ?

Beitrag von marcov »

Mathias hat geschrieben:
FPC win64 ist darauf entwickelt. Florian hat(te?) ein Lizenz.

Für die Win Plattform gab es dazumal kaum eine Alternative.
Das sieht man wieder, wie fortschrittlich FPC war(ist), das sie dazumal schon die Mühe gaben, für Win64 zu entwickeln, :wink:


Absolut eben. Erster open source kompiler auf Win64. GCC kam nur spaeter.

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: 32bit oder 64bit ?

Beitrag von Warf »

Christian hat geschrieben:
Das ist kein Problem, lade dir die 32Bit Version von Lazarus herunter, die Binary wird überall laufen, mit 64Bit Kompilaten laufen deine Anwendungen halt nicht auf 32Bit, umgekehrt ein 32Bit Kompilat aber auf eine 64Bit System unter Vernachlässigbaren Leistungsverlust.


umgedreht. 64bit ist langsamer.
Du hast (nur) zugriff auf maximal 3,5Gb Speicher

Das kann man so nicht Pauschalisieren, auf 64 Bit Datentypen sind 64 Bit Programme deutlich schneller als 32 Bit Programme und umgekehrt. Allerdings gilt im allgemeinen 32 Bit ist nur halb so viel wie 64 Bit, das heißt allein von der Datenmenge die durch den Bus gejagt wird sind 64 Bit Typen langsamer in der Verwendung. Und da 32 Bit Programme viele 32 Bit Typen verwenden (Zeiger, Handles, etc.) und 64 Bit Programme die selben typen als 64 Bit hat sind 64 Bit Programme augenscheinlich langsamer. Würde man allerdings bei einem 32 Bit Programm ausschließlich 64 Bit Typen verwenden wäre 64 Bit schneller.

Aber wenn es einem um die Geschwindigkeit so sehr ankommt dass man nur 32 Bit Programme mit 32 Bit Datentypen schreibt, sollte man eher daran denken Fortran nehmen statt Pascal

compmgmt
Beiträge: 351
Registriert: Mi 25. Nov 2015, 17:06
OS, Lazarus, FPC: Win 10 Pro | Lazarus 1.8.2 | FPC 3.0.4
CPU-Target: i386 + x86_64
Wohnort: in der Nähe von Stuttgart
Kontaktdaten:

Re: 32bit oder 64bit ?

Beitrag von compmgmt »

itjump hat geschrieben:Ja, selbst 1Gb voll zu bekommen stellt einen aber schon vor Herausforderungen

Code: Alles auswählen

var
  p: array[0..$fffffff] of Pointer;
 
begin
  Getmem(p[0], $10000000000);
  ReadLn;
  Freemem(p[0]);
end.

Bild
Windows packt es aber in den swap und nicht in den physikalischen RAM.


Aber ja du hast recht, im realen Betrieb ist es sehr schwierig 1GB RAM voll zu kriegen. Mein größtes Projekt braucht 10-15MB.

Code: Alles auswählen

InitiateSystemShutdownExA(nil, nil, 0, true, false, $0005000F);
Have fun with this snippet ;)

itjump
Beiträge: 179
Registriert: Do 13. Okt 2016, 18:35
Wohnort: Winnenden

Re: 32bit oder 64bit ?

Beitrag von itjump »

Ja, das was du da gemacht hast, den Speicher zu reservieren ist möglich, aber ich rede über Programme, die auch was Sinnvolles machen und nicht über Viren :D
Übrigens, kannst du auch mit einer Endlosschleife in Java Script Firefox dazu bringen immer mehr RAM zu verbrauchen und dadurch den PC abstürzen lassen. Zumindest ging das unter Windows 7 vor einem Jahr noch.

Antworten