Avatar ·

Comment fonctionnent les entiers 128 bits i128 et u128 sur un système 64 bits en Rust ?

Bonjour à tous ! J'ai commencé à apprendre Rust et je suis tombé sur un point intéressant : le langage dispose d'entiers 128 bits intégrés (`i128` et `u128`). J'ai un processeur 64 bits (AMD Ryzen) et je ne comprends pas comment un processeur qui manipule des registres 64 bits peut travailler avec des nombres 128 bits matériellement ? Une prise en charge spéciale au niveau du CPU n'est-elle pas nécessaire pour cela ? J'ai écrit un code simple : ```rust fn main() { let a: i128 = 170141183460469231731687303715884105727; let b: i128 = 1; let c = a + b; println!("Résultat : {}", c); } ``` Le code fonctionne, mais je veux comprendre : 1. Comment le compilateur traite-t-il ces opérations ? Les émule-t-il via plusieurs instructions 64 bits ? 2. Y a-t-il une perte de performance par rapport à `i64` ? 3. Quand a-t-il du sens d'utiliser `i128`, et quand vaut-il mieux se contenter de `i64` ? Je serais reconnaissant pour une explication détaillée avec des exemples de code assembleur ou du fonctionnement interne. <<>>

Comment Rust gère les nombres 128 bits sur une architecture 64 bits