DarthMoul
18-11-2004, 13:36
Για την επόμενη έκδοση του pctbench θα χρειαστώ 128 bits ακεραίους σε x86-64 πλατφόρμα. Έχει αντιμετωπίσει κανείς την περίπτωση; Η compilers για pc που χρησιμοποιώ, δηλαδή gcc, msvc και icc χειρίζονται και τους long και τους long long με 64 bits. Πρόκειται για ανωριμότητα και ελλειπή υποστήριξη της συγκεκριμένης πλατφόρμας, όμως σίγουρα υπάρχει κάποιος τρόπος για τον χειρισμό 128μπιτων ακεραίων χωρίς την χρήση assembly και sse2 instructions.
Στον gcc κατάφερα να ορίσω 128μπιτους ακεραίους με την παρακάτω δήλωση:
typedef unsigned int __attribute__((__mode__(__TI__))) UINT128;
UINT128 sum = 0;
αλλά όταν έρχεται η ώρα για το shift left και shift right, τα αποτελέσματα που πέρνω δεν είναι σωστά.
Αν το έχει αντιμετωπίσει κανείς και έχει καμμιά ιδέα καλό θα ήταν να το δούμε μαζί εδώ. Είναι κρίμα να αγοράζουμε 64μπιτους και να δουλεύουμε όπως πριν.
Θα είναι πολύ χρήσιμο reference για το μέλλον.
Στον gcc κατάφερα να ορίσω 128μπιτους ακεραίους με την παρακάτω δήλωση:
typedef unsigned int __attribute__((__mode__(__TI__))) UINT128;
UINT128 sum = 0;
αλλά όταν έρχεται η ώρα για το shift left και shift right, τα αποτελέσματα που πέρνω δεν είναι σωστά.
Αν το έχει αντιμετωπίσει κανείς και έχει καμμιά ιδέα καλό θα ήταν να το δούμε μαζί εδώ. Είναι κρίμα να αγοράζουμε 64μπιτους και να δουλεύουμε όπως πριν.
Θα είναι πολύ χρήσιμο reference για το μέλλον.