Warum sind 32 bit Programme nicht mit 64 bit Systemen kompatibel?

Hallo,
ich habe heute auf heise.de gelesen, dass es wohl sehr viele 32 bit IOS Apps gibt, die bald nicht mehr auf den neuen 64 bit Systemen (IOS 11+) funktionieren.
https://www.heise.de/newsticker/meldung/iOS-11-schickt-wohl-Hunderttausende-Apps-aufs-Abstellgleis-3654984.html

Aber ich verstehe nicht, warum. 32 bit Programme laufen doch grundsätzlich auf 64 bit Systemen. Oder nicht? Was verursacht da Kompatibilitätsprobleme?

Danke für eure Antworten!

Hallo!

Wer nicht ganz so jung ist, weiß, daß die Kassiererinnen früher™ im Supermarkt für jeden Artikel eine Nummer in die Kasse eingetippt haben, es gab die heutigen Scanner noch nicht.
Klar, die haben nach jedem Artikel das Pendant zur Enter-Taste gedrückt, aber wenn alle Artikel ne vierstellige Nummer haben, und die Kassiererinnen niemals nen Fehler machen, hätte man sie die Artikelnummern auch hintereinander, ohne Enter o.ä. eintippen lassen können. Die Kasse hätte gewusst, daß immer vier Ziffern eine Artikelnummer bilden, und die Welt wäre in Ordnung.

Aber dann wurde das Sortiment immer größer, und die vier Ziffern erscheinen etwas knapp. Man kauft also neue Kassen, die achtstellige Artikelnummern verwenden.
Neue Kassiererinnen werden von anfang an die achtstelligen Nummern lernen.
Die alten sind aber so eingeschliffen, daß sie mit den neuen Nummern nicht klar kommen. Was machen? Naja, die Kasse müßte bei diesen Kassiererinnen ja nur automatisch vor jeweils vier eingegebenen Ziffern einfach vier Nullen einfügen. Die Kassiererinnen können dann zwar keine neuen Artikel mit tatsächlich mehr als vierstelligen Nummern eintippen, die alten Artikel können sie aber weiter eingeben.


Jetzt zu den Computern:
Die Programme sind wie die Kassiererinnen, nur, daß sie nicht mit endlosen Kolonnen von Artikelnummern, sondern mit Speicheradressen hantieren.
Die alten 32Bit(4Byte)-Programme können maximal gut 4Mrd. Adressen verwalten, und sind so auf max. 4GB RAM beschränkt.
Jetzt benutzen Programme normalerweise zahlreiche Bibliotheken (dynlib, so, dll), und da muß gemeinsamer Konsens darüber herrschen, ob man jetzt 32 oder 64 Bit benutzt.
Entweder hat man die Bibliotheken in zwei Versionen (für 32 oder 64Bit) vorliegen, wie es z.B. Linux macht, oder man schafft es irgendwie, den DLLs beizubringen, sowohl 32 als auch 64Bit zu verstehen.

Letztendlich ist es also nicht so, daß 32Bit-Programme einfach so auf 64Bit-Systemen laufen, da steckt schon einiges an Aufwand dahinter, daß das funktioniert. Dazu kommen noch ganz viele Teufel und ganz viele Details…
Jedenfalls, diesen Aufwand will man sich so langsam mal sparen, indem man die 32Bit-Programme in die Wüste schickt.

Ah ok. Ich dachte es geht rein um die Hardware Voraussetzungen (sprich Registerlänge).