Avatar ·

كيف تعمل الأعداد الصحيحة 128 بت i128 و u128 في Rust على نظام 64 بت؟

مرحباً بالجميع! بدأت تعلم Rust وواجهت نقطة مثيرة للاهتمام: اللغة تحتوي على أعداد صحيحة مدمجة 128 بت (`i128` و `u128`). لدي معالج 64 بت (AMD Ryzen)، ولا أفهم كيف يمكن للمعالج، الذي يعمل بسجلات 64 بت، أن يتعامل مع أعداد 128 بت على مستوى العتاد؟ أليس هذا يتطلب دعماً خاصاً على مستوى وحدة المعالجة المركزية؟ كتبت كوداً بسيطاً: ```rust fn main() { let a: i128 = 170141183460469231731687303715884105727; let b: i128 = 1; let c = a + b; println!("النتيجة: {}", c); } ``` الكود يعمل، لكني أريد أن أفهم: 1. كيف يعالج المترجم هذه العمليات؟ هل يقوم بمحاكاتها عبر عدة تعليمات 64 بت؟ 2. هل هناك فقدان في الأداء مقارنة بـ `i64`؟ 3. متى يكون من المنطقي استخدام `i128`، ومتى يكون الأفضل استخدام `i64`؟ سأكون ممتناً لشرح مفصل مع أمثلة من كود التجميع أو البنية الداخلية. <<>>

كيف يتعامل Rust مع الأعداد 128 بت على معمارية 64 بت