Tôi tự hỏi liệu có thực sự không có chức năng nội tại phân chia 128 bit trong Visual C++ không?Phân chia nội tại 128-bit trong Visual C++
Có một hàm nội tại nhân 64x64 = 128 bit được gọi là _umul128(), phù hợp với hướng dẫn lắp ráp M64 x64.
Đương nhiên, tôi cho rằng sẽ có một bộ phận nội tại 128/64 = 64 bit (mô hình hóa lệnh DIV), nhưng tôi không thấy Visual C++ hay Intel C++, ít nhất nó không được liệt kê trong intrin.h.
Ai đó có thể xác nhận điều đó không? Tôi đã cố gắng grep'ing cho các tên chức năng trong các tập tin thực thi trình biên dịch, nhưng không thể tìm thấy _umul128 ở nơi đầu tiên, vì vậy tôi đoán tôi nhìn vào chỗ sai.
Cập nhật: ít nhất tôi đã tìm thấy mẫu "umul128" (không có dấu gạch dưới) trong c1.dll của Visual C++ 2010. Tất cả nội tại khác được liệt kê xung quanh nó, nhưng tiếc là không có "udiv128" hoặc tương tự (Vì vậy, có vẻ như họ thực sự đã "quên" để thực hiện nó.
Để làm rõ: Tôi không chỉ tìm kiếm loại dữ liệu 128 bit, mà còn là cách để chia một bit vô hướng 128 bit bằng 64 bit int trong C++. hoặc là một nội tại chức năng hoặc mẹ đẻ 128-bit hỗ trợ số nguyên sẽ giải quyết vấn đề của tôi.
Edi t: Câu trả lời là không, không có _udiv128 nội tại trong Visual Studio 2010 hoặc 2012.
Nó không phải là một phần của CRT. Nó là một nội tại, đi kèm miễn phí với bộ vi xử lý. Nhưng chỉ ở chế độ 64 bit. Không có freebie cho div cho đến khi bạn nhận được một bộ xử lý 128-bit. Với phạm vi rộng lớn của pow (2, 128), bạn nên tìm kiếm thư viện chính xác tùy ý. Rất nhiều người xung quanh. –
@TreeMonkie: __int18 không được hỗ trợ bởi VS, xem http://stackoverflow.com/questions/6759592/how-to-enable-int128-on-visual-studio – cxxl
@Hans: xin lỗi, tôi không hiểu. Nó không chỉ là bản chất, thậm chí không ở chế độ 64 bit. Và tôi cần nó để * viết * một lib chính xác tùy ý :) – cxxl