Khi bạn đã quyết định bước trên con đường bảo mật, không sớm thì muộn các bạn cũng phải tiếp xúc với Assembly. Mình biết đây là một ngôn ngữ rất khó hiểu, kể cả đối với những bạn đọc hiểu chuỗi nhị phân. Vậy nên, trong bài viết này, mình sẽ giới thiệu cho các bạn trang web Compiler Explorer, giúp bạn xem code dưới dạng Assembly. Đặc biệt là trang web này có thể xem từng dòng và highlight cho bạn biết luôn nhé.
Compiler Explorer là gì?
Compiler Explorer là một công cụ trực tuyến cho phép bạn xem và phân tích mã nguồn trong quá trình biên dịch. Nó cho phép bạn nhập mã nguồn trong nhiều ngôn ngữ lập trình khác nhau và xem kết quả biên dịch đối với các phiên bản trình biên dịch khác nhau. Compiler Explorer thường được sử dụng để tìm hiểu cách một đoạn mã nguồn cụ thể được biên dịch thành mã máy, giúp bạn hiểu rõ hơn về cách hoạt động của trình biên dịch và tối ưu hóa mã nguồn. Bạn cũng có thể chia sẻ các liên kết đến Compiler Explorer với người khác để trình bày và thảo luận về mã nguồn của mình.
Một trong những tính năng mình thích nhất ở trang web này là nó có thể tạo link truy cập đến code hiện tại của bạn. Ví dụ như khi truy cập link này, bạn vẫn sẽ thấy những dòng lệnh mà mình code, mã Assembly, và kết quả của chương trình. Bạn có thể sử dụng tính năng này để chia sẻ đoạn code bạn muốn đến bạn bè của mình.
Tại sao bạn nên sử dụng Compiler Explorer
Có nhiều lợi ích khi sử dụng Compiler Explorer:
Advertisement
Phân tích mã nguồn: Compiler Explorer cho phép bạn xem mã nguồn và xem kết quả biên dịch của nó trong nhiều phiên bản trình biên dịch khác nhau. Điều này giúp bạn hiểu rõ hơn về cách trình biên dịch chuyển đổi mã nguồn thành mã máy và cách các ngôn ngữ lập trình khác nhau tương tác với trình biên dịch.
Tối ưu hóa mã nguồn: Compiler Explorer cho phép bạn thử nghiệm các tùy chọn biên dịch và tối ưu hóa để tìm ra cách tốt nhất để viết mã. Bạn có thể thử nghiệm các cấu hình khác nhau, so sánh mã nguồn và tìm ra cách cải thiện hiệu suất hoặc kích thước của mã.
Học và giảng dạy: Compiler Explorer là một công cụ hữu ích cho việc học và giảng dạy. Bạn có thể chia sẻ liên kết Compiler Explorer với người khác để giải thích và thảo luận về mã nguồn cụ thể. Nó cũng cung cấp một cách trực quan để hiểu cách mã nguồn được biên dịch và thực thi.
So sánh các phiên bản trình biên dịch: Compiler Explorer cho phép bạn so sánh kết quả biên dịch giữa các phiên bản trình biên dịch khác nhau. Điều này rất hữu ích khi bạn muốn kiểm tra sự tương thích của mã nguồn với các phiên bản trình biên dịch mới hoặc cũ hơn.
Tóm lại, Compiler Explorer là một công cụ mạnh mẽ để nghiên cứu, phân tích và tối ưu hóa mã nguồn, đồng thời cung cấp môi trường học tập và giảng dạy hiệu quả.
Advertisement
So sánh các trình biên dịch và kiến trúc
Bạn có thể phân tích những cách tối ưu hóa khác nhau bằng cách xem trình biên dịch ảnh hưởng như thế nào đối với file nhị phân được tạo. Ảnh bên dưới hiển thị một hàm C++ được biên dịch không sử dụng tối ưu hóa (-O0).
Ảnh dưới cũng sử dụng hàm C++ như trên, nhưng nó được biên dịch bằng sử dụng tối ưu hoá -O3.
Như bạn có thể thấy, trình biên dịch gcc sẽ tạo ra một file nhị phân khác. Bạn cũng có thể chọn kiến trúc hệ thống khác. Như hình dưới thì mình chọn kiến trúc ARMv7-a.
Compiler Explorer cực kỳ linh hoạt và tiện lợi vì nó cho phép bạn thực hiện nhiều việc liên quan đến compiler trong một tab trình duyệt duy nhất.
Compiler Explorer đã giúp mình rất nhiều trong việc tự nghiên cứu Assembly và hiểu cách trình biên dịch hoạt động như thế nào. Mình nghĩ trang web này cũng dành cho những bạn nào đang nghiên cứu tối ưu hoá code nữa đấy.