Avatar ·

Como funcionam os inteiros de 128 bits i128 e u128 em um sistema de 64 bits no Rust?

Olá a todos! Comecei a estudar Rust e me deparei com um ponto interessante: a linguagem possui inteiros de 128 bits embutidos (`i128` e `u128`). Eu tenho um processador de 64 bits (AMD Ryzen) e não entendo como um processador que opera com registradores de 64 bits pode trabalhar com números de 128 bits em hardware? Isso não exigiria suporte especial no nível da CPU?\n\nEscrevi um código simples:\n\n```rust\nfn main() {\n let a: i128 = 170141183460469231731687303715884105727;\n let b: i128 = 1;\n let c = a + b;\n println!("Resultado: {}", c);\n}\n```\n\nO código funciona, mas quero entender:\n1. Como o compilador lida com essas operações? Ele as emula através de várias instruções de 64 bits?\n2. Há perda de desempenho em comparação com `i64`?\n3. Quando faz sentido usar `i128` e quando não?