Tôi làm việc trên phần mềm cho hệ thống nhúng không có FPU. Tôi muốn có thể xây dựng phần mềm này với một thư viện điểm nổi phần mềm trên máy tính để bàn của tôi để có được cái nhìn thực tế hơn về hiệu năng. Có ai có bất kỳ ý tưởng về làm thế nào để đạt được điều này?Phao mềm trên x86_64
Cho đến nay tôi chưa đạt được nhiều tiến bộ với việc sử dụng -msoft-float
với gcc. Tôi hiện đang xem xét việc sử dụng tiếng kêu. Bằng cách sử dụng các cờ -Xclang -msoft-float -Xclang -no-implicit-float
và chỉ định một thư viện có triển khai các thủ tục nổi mềm, tôi có thể nhận được ứng dụng của tôi để biên dịch. Khi tôi cố gắng chạy nó, nó luôn luôn segfaults. Tốt nhất tôi có thể nói, điều này là bởi vì các thư viện mà chương trình này phụ thuộc không được biên dịch bằng phao mềm. Ứng dụng này phụ thuộc vào gtk, sqlite, expat, gcrypt, một số thư viện nội bộ và libc.
Tôi muốn tìm cách xây dựng môi trường xây dựng hoàn chỉnh với hỗ trợ nổi mềm. Tôi đã thử xây dựng uclibc và thiết lập CC
và CXX
vào các tệp nhị phân của clang, nhưng điều này không hoạt động do các yêu cầu để biên dịch chuỗi công cụ gcc (những thứ như autotools phàn nàn về phiên bản trình biên dịch không chính xác). Vì tôi muốn sử dụng clang làm trình biên dịch trong buildroot mới (để có hỗ trợ float mềm), tôi không thấy cần phải xây dựng gcc. Có thể làm điều này mà không có gcc?
Tôi nghĩ rằng đây là điều không thể mà không thay đổi mã, bởi vì 'x86_64' ABI đòi hỏi' xmm' đăng ký để có mặt. Có thể một số thủ thuật '-Ddouble = mpfr :: real' sẽ hoạt động, sử dụng thư viện' mpfr' được yêu cầu bởi 'gcc'. – hirschhornsalz
Như đã lưu ý, 'clang' đã có thể biên dịch một tệp nhị phân mà không có tham chiếu đến các hướng dẫn hoặc các thanh ghi dấu chấm động. Tôi cho rằng câu hỏi thực sự của tôi do đó là nếu có một cách để làm cho một chuỗi công cụ toàn bộ bằng cách sử dụng một cái gì đó như thế này. –
Giải pháp được đề xuất có được không? –