2015-12-19 17 views
7

Tôi thực sự muốn sử dụng nhanh chóng cho lập trình nhúng vì tôi cảm thấy nó thay thế tốt hơn cho C++, Bộ xử lý tôi đang sử dụng là ARM Cortex-M4F (http://www.ti.com/tool/ek-tm4c123gxl). Nhìn vào trình biên dịch nhanh chóng page, nó nói rằng bạn có thể tạo LLVM IR từ nguồn nhanh chóng và sau đó tôi đã hy vọng vượt qua biên dịch với LLVM. Điều này có khả thi không?Sử dụng trình biên dịch nhanh cho kim loại trần?

Trả lời

3

Chắc chắn có thể tạo mã máy bằng Swift. Trong thực tế, theo mặc định khi bạn biên dịch một chương trình Swift trong Xcode hoặc với trình biên dịch dòng lệnh swiftc, tệp thực thi được tạo ra bao gồm mã máy.

Mã bytecode LLVM được tạo tại một số điểm trong quá trình xây dựng, nhưng tệp thực thi cuối cùng được tạo ra là mã máy. Có các tùy chọn trình biên dịch cho phép bạn chỉ tạo mã byte LLVM nếu bạn muốn, nhưng bytecode LLVM thường không được thực thi trực tiếp, như Java bytecode với được chạy bởi thời gian chạy Java.

Theo như biên dịch chéo cho ARM, tôi không chắc cách nó hoạt động với công cụ swiftc, nhưng nếu bạn xây dựng một dự án Xcode iOS, nó sẽ tạo ra một tệp thực thi ARM. Tôi chắc rằng trình biên dịch swiftc có tất cả các tùy chọn bạn cần để tạo ra các tệp thi hành ARM.

Tuy nhiên, một điều tôi có thể nghĩ đến, đó là rất nhiều chức năng của Swift phụ thuộc vào khung công tác của Apple. Tuy nhiên, bây giờ Swift đã có nguồn mở, dần dần có nhiều thư viện tinh khiết hơn cho tất cả mọi thứ.

+1

hầu hết sự phụ thuộc với khung công tác của Apple đã biến mất, Foundation đã được triển khai nhanh chóng và có nguồn mở. –

+0

Swift yêu cầu thời gian chạy Objective-C, khá lớn trong ngữ cảnh nhúng (ít nhất 600KB theo [người này] (http://xmaker.mx/archives/14), những người có Objective-C làm việc trên một Cortex SiLabs -M4). Nếu bạn có bộ nhớ ngoài để ghi thì đó là ít vấn đề hơn. –

+0

@TonyK www.swift.org, nhanh chóng không còn phụ thuộc vào mục tiêu c. nó đã được mở nguồn –

0

Tôi đã khám phá khả năng này (sử dụng Swift cho các ứng dụng nhúng). Vì Swift cần thời gian chạy, sau khi biên dịch tĩnh "Hello, World!" (trên Ubuntu, x86-64 sử dụng Swift 3.0.2 mới nhất) kích thước nhị phân kết quả là hơn 5 MB, có thể là một vấn đề về bộ điều khiển ARM "nhỏ" (như Cortex-M0).

Các vấn đề liên quan