저는 리눅스 어셈블리 언어를 가르쳐 왔으며 BSD와 리눅스의 흥미로운 차이점을 발견했습니다. 유닉스에서는 80h 인터럽트를 호출하기 전에 syscall 매개 변수를 스택에 넣는다. 반대로, 리눅스에서는 매개 변수를 레지스터에 전달합니다.Linux가 Unix syscall 협약을 따르지 않는 이유는 무엇입니까?
누가 리눅스 개발자가 스택 대신 레지스터를 사용하게되었는지 이론적으로 알고 있습니까?
참고 : 차이점을 설명하는 좋은 페이지는 FreeBSD Developer's Handbook:System Calls이며 이유는 설명하지 않습니다.
명확한 아이디어는 아니지만 실행 속도와 위치의 접근 가능성과 관련이 있을지 모릅니다. 누군가가 명확히하기를 기다릴 것입니다. –
BSD가 "유닉스"를하는 이유는 무엇입니까? – unwind
@unwind - 필자의 질문에 포함 된 하이퍼 링크는 BSD가 syscalls에 대한 유닉스 협약을 따르고 Linux는 그렇지 않음을 암시합니다. 그렇지 않습니까? – clay