Hallo,
Stephan Goetter turms@web.de schrieb:
Bei 64Bit-Code sind die Befehlswvrter(Opcodes) meist auch 64Bit lang...
Nicht unbedingt, wenn man nur den Befehl, die beteiligten Register und evtl. noch einen kleinen Offset fuer die Adressierung unterbringen will, reichen schon 32 Bit pro Befehl.
plus RISC, macht im Vergleich mit 32Bit CISC ganz schvn grv_ere Binaries, was sich auch im Hauptspeicher, Cache usw. auswirkt...
Da die Befehle meisten _alle_ die gleiche Groesse habe, muss man direkt codierte Werte u.U. in kleineren Stuecken in ein Register bringen. Wenn man das geschickt macht und die erzeugten Werte geschickt verwendet, wird der Code gar nicht so stark aufgeblaeht. Dann verdoppeln sich praktisch nur die Speicherbereiche, wo man Adressen ablegt.
int ist auf 64Bit Maschienen aber glaube auch nur 32 Bit, long dagegen 64Bit, und long long dann 128Bit. Berichtigt mich wenn ich falsch liege.
Haengt vom Compiler ab. Auch der gcc implementiert das IMHO fuer verschiedene Prozessoren unterschiedlich.
Gruss
Holger