PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : 64 bit Prozessoren?!?



Big-Bull
22-04-2003, 19:48
Hi Leute,

ich bin gerade dabei mich mit Prozessorarchitekturen auseinander zu setzten... Und dabei kommt mir die Frage auf, wie man 32 Bit Programme auf 64 Bit portieren kann? Muss man den Quellcode nur noch mal durch den Compiler jagen, oder muss man ihn modifizieren?

MfG

Big-Bull

Boron
23-04-2003, 10:29
Neu übersetzen auf jeden Fall, so viel ist sicher!

Wobei ich mir jetzt nicht ganz sicher bin ist:
- integer ist auf 32Bit CPUs 32Bit breit, auf 64Bit CPUs werden es dann 64Bit sein --> Hier müsste dann evtl. auf long geändert werden, das immer 32Bit hat (wenn 32Bit unabdingbar sein sollen).

Es gibt mit Sicherheit nochmehr Fälle wo der Quellcode einen Hochsprache modifizert werden muss (Assemblercode muss komlett neu geschrieben werden)
Korrigiert mich wenn ich Blödsinn schreibe.

peschmae
23-04-2003, 11:15
kommt auf die Programmiersprache drauf an...

MfG Peschmä

anda_skoa
23-04-2003, 18:34
Original geschrieben von Boron
Neu übersetzen auf jeden Fall, so viel ist sicher!


Außer es gibt einen Emulationsmodus.
Ich glaube der 64-Bitter von AMD kann das.



Wobei ich mir jetzt nicht ganz sicher bin ist:
- integer ist auf 32Bit CPUs 32Bit breit, auf 64Bit CPUs werden es dann 64Bit sein --> Hier müsste dann evtl. auf long geändert werden, das immer 32Bit hat (wenn 32Bit unabdingbar sein sollen).


Eher umgekehrt.
long ist auf 64 Bit Systemen meisten 64 Bit, Integer weiter 32.
Darum ist es auch so gefährlich int zu benutzen, wenn man Pointer castet, File Adressen speichert, etc.

"Meistens" deswegen, weil es dem Compilerhersteller frei gestellt ist, wie lange er welchen Typ macht, solange gewissen Reihungen eingehalten werden.

Ciao,
_

Lin728
23-04-2003, 19:31
. .

sais
23-04-2003, 22:26
nur dumm halt das die wi**** von AMD auch bei tcpa mit machen...

dann wirst du wohl in zukunft dein suse 8.2 nicht mehr auf einem amd installieren können...

außer du hast bei amd und m$ dafür bezahlt..

mfg
sais

Lin728
24-04-2003, 14:40
ist abschaltbar

peschmae
25-04-2003, 07:44
... dann wohl doch noch eher PowerPC, aber harren wir mal der Dinge die da Kommen

afaik ist TCPA eh so, dass es entweder läuft, oder dann halt nicht. Zumindest jetzt noch...

MfG Peschmä

nobody0
29-04-2003, 11:56
Original geschrieben von anda_skoa
Außer es gibt einen Emulationsmodus.
Ich glaube der 64-Bitter von AMD kann das.



Eher umgekehrt.
long ist auf 64 Bit Systemen meisten 64 Bit, Integer weiter 32.



Nene, auf Alpha ist Integer schon immer 64 Bit lang gewesen. Integer gibt die Systemarchitektur wieder, also 32 Bit bei PC (ab 386), 64 bei Alpha. Zumindest ist das beim gcc so.

Genaugenommen hängt es aber vom Compiler ab und es gibt ja viele 16-Bit-Compiler auch für 32-Bit-Rechner (z. B. PC ab 386).

anda_skoa
02-05-2003, 12:17
Original geschrieben von nobody0
Nene, auf Alpha ist Integer schon immer 64 Bit lang gewesen.


Nicht auf denen, die hier bei uns in der Firma herum stehen:

Folgendes Programm ausgeführt


#include <stdio.h>

int main()
{
printf("sizeof(int)=%d, sizeof(long)=%d\n", sizeof(int), sizeof(long));

return 0;
}


ergibt


sizeof(int)=4, sizeof(long)=8


Sowohl mit cxx als auch mit gcc kompiliert

Ciao,
_

nobody0
02-05-2003, 12:39
Stimmt; ich meinte Pointer und long, aber nicht Int. Ich hatte das verwechselt :o
Deshalb gibt es ja Datentypen mit expliziter Größe in <linux/types.h>.

anda_skoa
02-05-2003, 17:08
Oder in
stdint.h

Ciao,
_