Nhà văn hội và trình biên dịch trong kiến ​​trúc VLIW


8

Tôi đọc câu này trong một cuốn sách:

Trong kiến ​​trúc VLIW, trình biên dịch / và trình biên dịch hợp ngữ chọn các lệnh có thể được thực thi song song.

Sự khác biệt giữa nhà văn lắp ráp và trình biên dịch là gì? Một nhà văn lắp ráp cũng có nghĩa giống như lắp ráp?

Câu trả lời:


33

"Nhà văn lắp ráp" trong cuốn sách đó là một nhà phát triển phần mềm con người viết mã bằng ngôn ngữ trình biên dịch.


15
1. thông dịch viên không chuyển đổi bất cứ điều gì để ngôn ngữ lắp ráp. 2. Bất kỳ công cụ nào chuyển đổi mã nguồn thành ngôn ngữ lắp ráp đều theo định nghĩa của trình biên dịch.
gnasher729

4
@ KellyS.Fbler một trình biên dịch chuyển đổi mã ngôn ngữ lắp ráp thành mã máy, vì vậy với định nghĩa này, nó không phải là trình biên dịch. Tuy nhiên, nếu bạn có một công cụ chuyển đổi một ngôn ngữ lắp ráp thành ngôn ngữ lắp ráp khác (ví dụ ARBfp1.0 thành ngôn ngữ lắp ráp gốc của GPU hiện đại), công cụ này là một trình biên dịch (với định nghĩa này).
Ruslan

1
@ gnasher729 - nitpick: theo hầu hết các định nghĩa, phần "Ngôn ngữ hội" của (2) là không cần thiết (đáng chú ý, những thứ như trình biên dịch bản thảo hoặc trình biên dịch java, không biên dịch mã nguồn nào để lắp ráp, nhưng biên dịch thành javascript hoặc java bytecode tương ứng). Gần đây, nó thường có nghĩa là bất kỳ công cụ nào biên dịch một ngôn ngữ lập trình thành ngôn ngữ lập trình khác (và về mặt kỹ thuật là ngôn ngữ lập trình).
Delioth

2
@ KellyS.Fbler: Trình biên dịch là chương trình dịch chương trình bằng ngôn ngữ X thành chương trình tương đương về mặt ngữ nghĩa trong ngôn ngữ Y. Tùy thuộc vào chính xác ngôn ngữ X và Y là gì, chúng tôi có tên đặc biệt cho các trình biên dịch đó và "trình biên dịch" là một trong những cái tên đặc biệt Nhưng chúng đều là các loại trình biên dịch đặc biệt. Ví dụ: nếu Y = assembly và X ở mức cao hơn Y, thì chúng ta gọi nó là trình biên dịch. Nếu Y = lắp ráp và X thấp hơn so với Y, chúng tôi gọi đó là trình phân tách. Nếu X ở mức thấp hơn Y và Y! = Lắp ráp, chúng tôi gọi nó là trình biên dịch khử. Nếu X và Y ở cùng một cấp độ, việc sử dụng gần đây sẽ là
Jörg W Mittag

2
@ KellyS.Fbler: Tôi đoán lý do tại sao các trình biên dịch thường không nói nhiều về các trình biên dịch là các trình biên dịch là các trình biên dịch rất nhàm chán. Về cốt lõi, trình biên dịch mã chỉ là ánh xạ 1: 1 của các ký hiệu có thể đọc được của con người đến các opcodes có thể đọc được bằng máy. Giai đoạn phân tích cú pháp đơn giản, không có loại, không có tối ưu hóa, việc tạo mã là tầm thường. Không có nội dung thuật toán thú vị nào mà trình biên dịch thực hiện: phân tích một ngôn ngữ phức tạp, kiểm tra kiểu, suy luận kiểu, tối ưu hóa, ánh xạ thông minh về ngữ nghĩa, v.v.
Jörg W Mittag

10

Trong kiến ​​trúc VLIW, trình biên dịch / và trình biên dịch hợp ngữ chọn các lệnh có thể được thực thi song song

Ý nghĩa của câu này là trong kiến ​​trúc VLIW, mã trình biên dịch mã (máy) xác định lệnh nào sẽ được thực thi song song, do đó, nó cố định tại thời điểm mã lắp ráp được viết bởi con người hoặc được tạo bởi trình biên dịch.

Điều này khác với cpus siêu vô hướng, trong đó các lệnh có thể được thực thi song song, đây là một quyết định được đưa ra bởi CPU mỗi khi nó thực hiện các hướng dẫn.

Ngoài ra còn có CPU kết hợp cả hai cách tiếp cận - Itanium2 tương thích ngược với Itanium, đóng gói 3 hướng dẫn vào từ VLIW. Nhưng, từ đầu, Itanium2 có thể thực thi hai gói như vậy trong chu kỳ CPU đơn và quyết định này được đưa ra tại thời điểm thực hiện.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.