2012-01-08 19 views
14

Tôi đang học chương trình phụ trợ LLVM.ví dụ mã để tìm hiểu chương trình phụ trợ LLVM

Hiện tại tôi quan tâm đến việc phân tích, các chuyển đổi chương trình sau này. (Tôi cho rằng tôi sẽ thông thạo hơn với phân tích, sau đó sẽ là thời gian để chuyển đổi chương trình).

Bạn có thể giới thiệu tài nguyên để học không? (Tôi biết sổ tay lập trình LLVM và Sách Rồng;)).

Theo tài nguyên, tôi không chỉ là hướng dẫn, sách, mà là đặc biệt là các dự án nhỏ được viết tốt. Tôi muốn đọc ví dụ mã, biên dịch và chơi với chúng (hack một chút) để tìm hiểu thêm về triển khai thực hiện.

Những mã này không bị giới hạn ở phần phân tích. Chủ đề là chương trình phụ trợ LLVM nói chung, trong khi phân tích và chuyển đổi chương trình là thú vị nhất.

+1

Hơi tang: sử dụng trang [Try Out LLVM] (http://llvm.org/demo/index.cgi), người ta có thể yêu cầu tạo nguồn API LLVM C++ tương đương có thể đã tạo IR. Nó có thể giúp (hoặc không) khi tìm kiếm một bản dịch cụ thể. –

Trả lời

2

Tất cả các phép biến đổi LLVM được tổ chức thành các đường dẫn khép kín bên trong lib/Transforms dir, Bạn có thể đọc nguồn của nó và chạy bất kỳ mã tùy ý nào trên mã của bạn bằng công cụ opt.

Ngoài ra, có hướng dẫn tốt về cách viết thẻ của riêng bạn và sử dụng nó làm mô-đun có thể tải mà không cần biên dịch lại toàn bộ LLVM.

Có sân chơi khá rộng.

+2

** Tôi đã hỏi về một cái gì đó nhiều hơn bản thân tài liệu và nguồn llvm. Đặc biệt tôi đã viết về các dự án nhỏ (thậm chí là đồ chơi ví dụ về tấn công LLVM) **. Tôi đã nhấn mạnh về kiến ​​thức về [sách hướng dẫn LLVM] (http://llvm.org/docs/), bao gồm: [LLVM doxygen được đề cập trong phần "Lập trình"] (http://llvm.org/doxygen/) về lập trình từ nguồn ba trong [Hướng dẫn CMVM CMake] (http://llvm.org/docs/CMake.html#passdev), ... Có rất nhiều tài liệu và bạn có thể có được cái nhìn tổng thể tốt về dự án. Tuy nhiên, trong nhiều khía cạnh tài liệu hút, vì vậy có câu hỏi về sth hơn. –

+1

Như bạn đang đề cập đến về tài liệu và * "mà không biên dịch lại toàn bộ LLVM" *, tôi muốn cho bạn biết về cách làm cho ra khỏi cây nguồn: [Xây dựng LLVM với CMake: Phát triển LLVM ra khỏi nguồn] (http : //llvm.org/docs/CMake.html#passdev) –

+1

Được rồi, được rồi, xin lỗi vì câu trả lời không liên quan. Đối với việc phát triển vượt ra khỏi cây, tính năng này thực sự được phát triển bởi tôi, lol. – arrowd

1

Là người đã làm những gì bạn muốn làm cách đây 3 năm: Codecase LLVM có các ví dụ tốt nhất. Có lẽ một nơi tốt để bắt đầu là phân tích thống trị, vì nó được mô tả tốt trong các sách biên dịch.

Kiểm tra như thế nào nó được thực hiện trong LLVM: http://llvm.org/doxygen/Dominators_8h_source.html

nơi khác để tìm có thể lập kế hoạch giảng dạy.

1

tôi đang tìm kiếm một cái gì đó tương tự, mã có sử dụng thư viện llvm, và sau phiên dài trong google Tôi chỉ tìm thấy nó trong các trang web llvm dưới "dự án llvm": http://llvm.org/ProjectsWithLLVM/

chỉ cần tải những gì bạn nghĩ có liên quan cho bạn và chơi cùng.