GCC가 기본적으로 AT & T 구문을 사용하는 이유는 무엇입니까?


9

제목이 모든 것을 말한다고 생각합니다. :)

GCC가 AT & T / GAS 구문을 사용하는 특별한 실용적인 이유가 있습니까 (주로 역사적인 것 같지만 스스로 찾을 수 없습니다)?

참고 : 이것이 기본값임을 알고 있으며 전환 할 수 있습니다

참고 2 : 개인적으로 "인텔 구문"이 훨씬 더 읽기 쉽기 때문에 나를 놀라게합니다.


3
해당 기능을 추가하고 '이유'를 물은 사람을 찾아 보지 않으면 대답을 알 수 없습니다.

1
@MichaelT 나는 그 가능성을 알고 있지만 여전히 그 흥미로운 주제를 발견하고 있습니다.
Vyktor

@Vyktor와 같은 질문은 때때로 대답 할 수 없지만 " on-topic " 의 회색 영역에있는 경우에도 여전히 컴퓨터 과학 역사가 흥미로울 것입니다.

@ Snowman은 동의했지만 GlenH7이 수행 한 작업을 수행하면 (googling 대신 gcc history를 사용하십시오 why gcc uses at&t) 나는 그 질문을하지 않을 것입니다.
Vyktor

답변:


13

GCC는 기본적으로 AT & T System V (현재 UNIX)를 사용하거나 System V와 매우 유사한 구문을 사용하는 시스템에서 작성 되었으므로 기본적으로 AT & T 구문을 사용 합니다.

에서 위키 백과 GCC에

GNU 운영 체제를 부트 스트랩하기 위해 Richard Stallman은 Amsterdam Compiler Kit (Free University Compiler Kit라고도 함)의 작성자 인 Andrew S. Tanenbaum에게 GNU 용 소프트웨어를 사용할 수 있는지 물었습니다. Tanenbaum이 자유 대학이 자유롭지 만 컴파일러는 그렇지 않다고 말했을 때 Stallman은 자신의 글을 쓰기로 결정했습니다. Stallman의 초기 계획은 Len Tower와 다른 사람들의 도움을 받아 파스텔에서 C로 Lawrence Livermore Laboratory의 기존 컴파일러를 다시 작성하는 것이 었습니다. Stallman은 Livermore 컴파일러를위한 새로운 C 프론트 엔드를 작성했지만, 64K의 68000 Unix 시스템에서는 불가능한 메가 바이트의 스택 공간이 필요하다는 것을 깨달았고 새로운 컴파일러를 처음부터 작성해야한다고 결론지었습니다. Stallman은 자신이 작성한 C 프론트 엔드를 사용했지만 파스텔 컴파일러 코드는 GCC로 끝나지 않았습니다.

다음 부분을 참고하십시오.

Stallman은 Livermore 컴파일러를 위해 새로운 C 프론트 엔드를 작성했지만 64K의 68000 Unix 시스템에서는 불가능한 메가 바이트의 스택 공간이 필요하다는 것을 깨달았습니다 ...

GCC was first released March 22, 1987*System V Release 3 was released in 1986**가 주어지면 GCC가 SVR2 또는 SVR3에 작성되었을 가능성이 높습니다.


Wikipedia의 인용문에 따르면 Stallman은 Unix 기반의 System V 인 Lawrence Livermore Labs의 장비를 연구하고 있음을 분명히 알 수 있습니다. 따라서 여기서 멈추고 "그가 작업해야하는 것"이라고 말할 수있었습니다. 그러나 그 시점에서 사용 가능한 MS-DOS / PC-DOS 시스템 을 보는 것도 흥미 롭습니다 . 이 일정 에 따르면 PC-DOS 1의 후보는 버전 3.2 일 것입니다.

네트워킹 시설이 유닉스 기반 시스템이 제공 할 수있는 것만 큼 좋지 않았기 때문에 PC (개인용 컴퓨터)는 당시 학계 나 연구 환경에서 널리 사용되지 않았습니다. 서버 / 터미널 유형 환경에 대한 기록 환경 설정도있었습니다. 서버가 존재하기 전에 서버 / 터미널 시스템을 사용할 수 있었고 일반적으로 PC가 제공 할 수있는 것보다 훨씬 큰 처리 능력과 기타 리소스를 제공했습니다.

따라서 Stallman PC에서 GCC를 개발할 수 있었지만 그의 주요 작업은 Unix 시스템에 있었기 때문에 원치 않았을 것입니다.

로 그리고 주석에 언급 , 기본이되는 거기 건축 차이 유닉스 시스템과 PC에 전원을 공급 CPU를 사이는.

이 모든 것을한데 모아서 Stallman이 GCC를 개발할 때 Intel보다 AT & T 구문을 선택한 이유는 분명합니다.

1 MS-DOS를 3.31 이전의 PC-DOS라고하는 것이 가장 쉬운 방법 입니다. 그러나이 질문의 범위를 벗어난 DOS 개발의 역사에는 많은 것이 있습니다.


" 구문을 놓친 방법을 이해하지 못합니다. " UNIX가 AT & T Bell Labs에서 만들어 졌기 때문에 인텔 구문이 MS-DOS 및 Windows 환경에서 지배적이며 AT & T 구문이 Unix 세상에서 지배적입니다. " 너무 똑바로.
Vyktor

그러나이 답변에서 다루지 않은 것은 GAS가 다른 많은 CPU 아키텍처에 "기본"구문을 사용하는 이유입니다. x86 CPU는 실제로 AT & T 구문을 사용하는 몇 안되는 것 같습니다.
Dolda2000

"... 유닉스 시스템과 PC를 구동하는 CPU 사이에는 근본적인 아키텍처 차이가있었습니다." 응? CPU는 동일했습니다. 명령어 세트 아키텍처는 동일합니다. AT & T 구문은 항상 동일한 기본 아키텍처에 대한 대체 표기법 이었습니다. 권리?
Maxpm

1
@Maxpm-CPU는 동일하지 않았으며, 이는 빅 엔디안 아키텍처와 리틀 엔디안 아키텍처가 중요한 곳입니다.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.