ich hab leider angst…
da brauchst keine Angst haben, des is die neue Normalität
die hiesige Tageszeitung schreibt auch darüber; auf die Idee musst ja mal kommen
wobei was zeigt uns das: dass da noch einige solche banalen Bugs in den weiten der Quellcodes
(der vom Linux kernel eingeschlossen) schlummern;
gerade solche Paradigmenwechsel wie sie bei der x86-Architektur durch die AMD64/EM64T-Erweiterung passierten,
sind ein Nährboden f. derartigen Quark;
Windows-User mögen mal in der Eingabeaufforderung folgendes eingeben
netstat -e
dass man da seit WinNT nicht draufgekommen ist, dass man des in 64-bit Integer packen hätte können;
wir haben jetzt 64-bit - zumindest behauptet es die Anzeige in div. Dialogen - und es ist immer noch 32-bit
(oder aber es ist 64-bit, und der "Vorsicht" halber wurde der höhere 32-bit Teil ignoriert)
f. diejenigen die ganz tief einsteigen, egal ob jetzt die Syntax unter Linux, Windows, Mac
diese x86_64-Architektur hat eine wahre Brutquelle an Bugs
mal etwas Geschichte:
mit dem 8086 fing alles an, da waren die Register 16-bit breit
beim allgemeinen 16-bit Register AX konnte man mit AH und AL
jeweils die höherwertigen bzw. niederwertigen 8-bit getrennt ansprechen;
ein setzen auf 0 ging z.B. so
SUB AX,AX
mit dem 80286 wurde der Protected-mode eingeführt;
(man konnte damit jetzt segmentiert¹ 16 MByte RAM bzw. 1 GByte virt. Speicher adressieren: ¹ 64 kByte Segmente)
beim 80386 passierte jetzt etwas grandioses; die Register waren jetzt 32-bit,
und damit wurden die erweiterten Register mit E... angesprochen;
das allgemeine 32-bit Register war EAX; das mit AH und AL blieb unverändert;
für die höherwertigen 16-bit gab es kein Synonym, es konnte nicht direkt angesprochen werden;
aber ein SUB AX,AX veränderte diesen Teil auch nicht; wollte man hingegen die kompletten 32-bit auf 0 setzen
brauchte es z.B. das SUB EAX,EAX
die 32-bit Register konnten auch im sogenannten Real-mode verwendet werden; da sprangen
auch lange bevor die echten 32-bit Betriebssysteme Einzug hielten einige auf;
und man verwendete diese 32-bit Register und reduzierte die Laufzeit beim Handling von 32-bit Werten um einiges;
mit den ersten echten 32-bit Systemen - z.B. WinNT - passierte wieder etwas grandioses
man erkannte, dass man die Logik für die 32-bit Ganzzahlen jetzt direkt auch auf 64-bit Ganzzahlen mit Hilfe der 32-bit Register an Stelle der 16-bit Register anwenden konnte; und das war bereits 1994(!); die Verwendung von __int64 war ganz normal, und das obwohl die Architektur nur 32-bit war;
mit dem 80486 wurde die Floating-point-Unit, welche früher nur mit einer weiteren 'Einheit' nachgerüstet werden konnte, in die CPU selbst integriert;
dies brachte für floating-point lastige Anwendungen ebenfalls einen Geschwindigkeitsvorteil;
der Pentium brachte erstmals die Geschichte von 2 Pipes und beschleunigte hier nochmals kräftig;
beim PentiumPro wurde das PAE eingeführt, damit konnte man mehr als die 4 GByte RAM ansprechen, von 64-bit aber noch keine Spur;
wobei diese PAE-Erweiterung war ihrer Zeit voraus;
nun kam AMD mit seinem AMD64²; und da wurde kräftig gepfuscht;
die Register waren jetzt nur bedingt 64-bit; denn in bis dato noch geängigen 32-bit Systemen konnten diese nicht verwendet werden;
die Verwendung war einem 64-bit Modus der CPU vorbehalten;
und hatte man diese Register dann doch zur Verfügung, war hier der nächste Murx;
wer meinte mit z.B. SUB EAX,EAX wie bisher die 32-bit Register auf 0 zu setzen, der hat sich mal gröber geschnitten;
damit werden auch die höheren 32-bit Teile mit auf 0 gesetzt; und weil es so toll ist, passiert dies ebenso mit z.B. SUB EAX,EBX
(der höherwertige Teil des RAX-Registers ist hier 0, auch wenn dieser vorher nicht 0 war)
das jemanden zu erklären bedarf schon etwas; und dann verwundert es auch nicht,
wenn dann ein 64-bit Register z.B. nur so SUB EAX,EAX auf 0 gesetzt wird;
dass es bis heute - im Jahr 15 nach Einführung des AMD64 - immer noch keinen general purpose int mit 128-bit gibt,
hat auch seine Gründe;
²dass EM64T so wie es Intel f. seine ersten Xeons nannte, die diese Architektur 'kopierten' der selbe Murx war,
braucht dann auch nicht zu verwundern;
die größte Schlappe bei der AMD64/EM64T Sache war ja ganz was anderes; beim Otto-Normal-Anwender, ging das auch spurlos vorüber;
aber der 64-bit Modus kennt keine Segemntierung mehr; wieso soll man diese denn noch zur Verfügung stellen, wenn sie ohnehin keiner nutzt;
seit 32-bit heißt das Modewort: Flat-Adressierung;
wo doch die Segmentierung genau die Waffe gegen Malware schlecht hin gewesen wäre;
hätte aber Disziplin und Ordnung erfordert, welche nicht gegeben ist;