Công cụ mã bytecode CLR/.NET nào tồn tại?


7

Tôi biết rõ về các công cụ Java để thao tác, tạo, giải mã mã byte JVM (ASM, cglib, jad, v.v.). Những công cụ tương tự tồn tại cho mã bytecode CLR? Mọi người có thực hiện thao tác bytecode cho CLR không?

2

Bytecode là định dạng nhị phân. Các assembly .NET hoạt động khá khác nhau về cách chúng lưu trữ các lệnh thực thi.

Thay vì biên dịch xuống cấu trúc giống như bytecode, ngôn ngữ .NET được biên dịch thành một ngôn ngữ trung gian (trên thực tế, nó được gọi là chỉ - IL).

Đây là ngôn ngữ có thể đọc được của con người trông giống như một phiên bản trình theo hướng đối tượng.

Vì vậy, về mặt kiểm tra hoặc thao tác IL cho các hội đồng riêng lẻ, các công cụ như Reflector và ILDASM cho phép bạn xem thuận tiện IL cho bất kỳ hội đồng nào.

Thao tác có một chút khác biệt, tôi khuyên bạn nên xem xét một số công cụ AOP trong không gian .NET. Tôi cũng khuyên bạn nên xem Phoenix, đó là một dự án biên dịch mà MS có trong các tác phẩm. Nó có một số tính năng thao tác biên dịch thực sự tuyệt vời.

Nếu bạn muốn biết thêm về các công cụ .NET AOP, tôi khuyên bạn nên mở một câu hỏi khác (đó là toàn bộ các sâu khác).

Ngoài ra còn có một số cuốn sách sẽ dạy cho bạn những điểm nhấn của IL. Nó không phải là một ngôn ngữ rất phức tạp để học.

+8

"Hội đồng NET hoạt động khá khác nhau về cách chúng lưu trữ các hướng dẫn thực hiện" không họ không ... mọi thứ cuối cùng được biên dịch thành "định dạng nhị phân" . Định dạng nhị phân này có tương ứng 1 đến 1 với IL. 06 aug. 092009-08-06 09:53:04


4

ILDASMReflector lưu ý.


14

Phản xạ luôn tốt, nhưng Mono.Cecil là công cụ tốt nhất mà bạn có thể yêu cầu tổng thể. Thật vô giá khi thao túng CIL theo bất kỳ cách nào.


7

Mono.Cecil là một công cụ tuyệt vời như ASM. Đó là một tiểu dự án của Mono, và hoàn toàn là nguồn mở. Nó thậm chí còn cung cấp better feature hơn System.Reflection.


1

NDepend cho phép bạn thực hiện. NET phân tích phân tích tĩnh (số liệu mã, phân tích phụ thuộc, v.v.). NDepend là rất hữu ích để có được một cái nhìn tổng quan về cấu trúc của các hội đồng .NET của bạn bằng cách sử dụng ma trận phụ thuộc, đồ thị phụ thuộc và số liệu sơ đồ trang web visualizations.

Nó cũng được tích hợp với Trình phản xạ: ví dụ bạn có thể phát hiện các loại và phương thức quan trọng trong cụm của bạn bằng cách sử dụng tương ứng một Loại/Phương pháp Rank metric (chỉ số mã tương tự với Google Page Rank) và chuyển trực tiếp từ NDepend sang Reflector lấy mã được tháo rời trong C#, VB.NET, v.v.