Tại sao GCC sử dụng cú pháp AT & T theo mặc định?


9

Tôi nghĩ tiêu đề nói lên tất cả :)

Có bất kỳ lý do thực tế cụ thể nào không (tôi đoán nó chủ yếu mang tính lịch sử, nhưng tôi không thể tự mình tìm thấy nó) tại sao GCC sử dụng cú pháp AT & T / GAS?

Lưu ý: Tôi biết đây chỉ là mặc định và bạn có thể chuyển đổi nó

Lưu ý 2: Cá nhân tôi thấy "cú pháp Intel" dễ đọc hơn nhiều, vì vậy đó là lý do tại sao nó làm tôi thất vọng.


3
Câu trả lời dường như không thể biết được trừ khi bạn tìm kiếm người đã thêm chức năng đó và hỏi "tại sao".

1
@MichaelT Tôi biết về khả năng đó, nhưng tôi vẫn thấy chủ đề khá thú vị này ... Có lẽ ai đó đã xem một số trích dẫn hoặc như vậy.
Vyktor

Các câu hỏi @Vyktor như thế này đôi khi không thể trả lời được, nhưng tôi vẫn thấy lịch sử khoa học máy tính trở nên thú vị ngay cả khi trong khu vực màu xám của " chủ đề "

@Snowman đồng ý, nhưng nếu điều đó xảy ra với tôi để làm những gì GlenH7 đã làm (đi vào lịch sử gcc thay vì googling why gcc uses at&t) tôi sẽ không hỏi câu hỏi đó.
Vyktor

Câu trả lời:


13

GCC sử dụng cú pháp AT & T theo mặc định vì ban đầu nó được viết trên một hệ thống sử dụng AT & T System V (hiện được gọi là UNIX) hoặc có cú pháp gần giống với System V.

Từ Wikipedia trên GCC

Trong nỗ lực khởi động hệ điều hành GNU, Richard Stallman đã hỏi Andrew S. Tanenbaum, tác giả của Bộ biên dịch Amsterdam (còn được gọi là Bộ biên dịch đại học miễn phí) nếu anh ta có thể sử dụng phần mềm đó cho GNU. Khi Tanenbaum nói với anh rằng trong khi Đại học Tự do miễn phí, trình biên dịch thì không, Stallman quyết định tự viết. Kế hoạch ban đầu của Stallman là viết lại một trình biên dịch hiện có từ Phòng thí nghiệm Lawrence Livermore từ Pastel sang C với sự giúp đỡ của Len Tower và những người khác. Stallman đã viết một giao diện C mới cho trình biên dịch Livermore, nhưng sau đó nhận ra rằng nó cần megabyte dung lượng ngăn xếp, không thể áp dụng trên hệ thống 68000 Unix chỉ với 64K và kết luận rằng anh ta sẽ phải viết một trình biên dịch mới từ đầu. Không có mã trình biên dịch Pastel nào kết thúc bằng GCC, mặc dù Stallman đã sử dụng giao diện C mà anh ta đã viết.

Lưu ý phần sau:

Stallman đã viết một giao diện C mới cho trình biên dịch Livermore, nhưng sau đó nhận ra rằng nó cần megabyte dung lượng ngăn xếp, không thể áp dụng trên hệ thống Unix 68000 chỉ với 64K ...

Cho rằng GCC was first released March 22, 1987*System V Release 3 was released in 1986** đó, rất có thể GCC đã được viết trên cả SVR2 hoặc SVR3.


Trích dẫn trên Wikipedia cho thấy rõ rằng Stallman đang làm việc trên thiết bị của Phòng thí nghiệm Lawrence Livermore, dựa trên Unix và do đó là Hệ thống V. Vì vậy, chúng tôi có thể dừng lại ở đó và chỉ nói "đó là những gì anh ta phải làm việc." Nhưng thật thú vị khi xem xét các hệ thống MS-DOS / PC-DOS có sẵn tại thời điểm đó. Theo dòng thời gian này , ứng cử viên có khả năng cho PC-DOS 1 sẽ là phiên bản 3.2.

PC (máy tính cá nhân) không được sử dụng rộng rãi trong các thiết lập học thuật hoặc nghiên cứu tại thời điểm đó bởi vì các thiết bị mạng của chúng không tốt như những gì các hệ thống dựa trên Unix có thể cung cấp. Ngoài ra còn có một ưu tiên lịch sử cho môi trường loại máy chủ / thiết bị đầu cuối. Các hệ thống máy chủ / thiết bị đầu cuối đã có sẵn trước khi PC tồn tại và thường cung cấp sức mạnh xử lý và các tài nguyên khác lớn hơn nhiều so với những gì PC có thể cung cấp.

Vì vậy, trong khi Stallman có thể đã phát triển GCC trên PC, anh ta có thể sẽ không muốn vì công việc chính của anh ta là trên các hệ thống Unix.

Và như đã lưu ý trong một bình luận , có một sự khác biệt về kiến ​​trúc cơ bản giữa các CPU cung cấp năng lượng cho các hệ thống Unix và PC.

Đặt tất cả các phần đó lại với nhau và khá rõ ràng tại sao Stallman chọn cú pháp AT & T so với Intel khi phát triển GCC.

1 Lưu ý rằng dễ dàng nhất để nói rằng MS-DOS được gọi là PC-DOS trước phiên bản 3.31. Điều đó đang được nói, có rất nhiều lịch sử phát triển của DOS nằm ngoài phạm vi của câu hỏi này.


Tôi không hiểu làm thế nào tôi bỏ lỡ này " cú pháp Intel chiếm ưu thế trong thế giới MS-DOS và Windows, và AT & T cú pháp là chiếm ưu thế trong thế giới Unix, kể từ Unix đã được tạo ra tại AT & T Bell Labs. " Tham gia với câu trả lời của bạn nó chỉ có vẻ thẳng tiến
Vyktor

Tuy nhiên, điều mà câu trả lời này không đề cập đến là tại sao GAS sử dụng cú pháp "nguyên gốc" cho rất nhiều kiến ​​trúc CPU khác. CPU x86 dường như là một trong số ít CPU thực sự sử dụng cú pháp AT & T.
Dolda2000

"... có một sự khác biệt về kiến ​​trúc cơ bản giữa các CPU cung cấp năng lượng cho các hệ thống Unix và PC." Huh? Các CPU là như nhau. Các kiến ​​trúc tập lệnh là như nhau. Cú pháp AT & T luôn là một ký hiệu thay thế cho cùng một kiến ​​trúc cơ bản. Đúng?
Tối đa

1
@Maxpm - Các CPU không giống nhau, và đây là vấn đề kiến ​​trúc endian lớn so với nhỏ.
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.