강사는 지난 주 Linux에서 인터럽트를 처리하는 데 대해 특히 do_IRQ 기능을 설명했습니다. 왜 do_IRQ 함수가 스택 대신 레지스터에서 매개 변수를 읽는 지 궁금했습니다. 그러나 강사는 또한이 이유를 알지 못했습니다. 이제 do_IRQ와 같은 커널 함수가 왜 스택 대신 레지스터에서 필요한 매개 변수를 읽는 지 궁금합니다. 나는 그것을 봤지만 단지 함수를 레지스터 또는 스택에서 자신의 매개 변수를 읽을 수 있지만 이유는 발견.스택에서가 아니라 레지스터에서 매개 변수를 읽는 것
0
A
답변
0
커널 2.6부터 모든 커널 함수는 스택이 아닌 레지스터를 사용하여 처음 세 개의 매개 변수 (x86_64에서 6)를 전달합니다.
고대 2.4 커널에서는 do_IRQ
과 같이 몇 가지 성능에 중요한 기능 만이 작동합니다. 강사가 2.4 커널에 대해 가르쳐 줍니까?!
레지스터에 매개 변수를 전달하면 성능이 향상됩니다.
메모리에 비해 (L1 캐시에 있더라도) 레지스터를 읽고 쓰는 것이 훨씬 빠릅니다.
모든 경우에있어 호출자와 수신자가 매개 변수 전달 방법에 대해 매우 중요합니다.
함수가 비표준 메서드를 사용하면 컴파일러 특성으로 표시됩니다.
이 속성은 컴파일러에게 두 가지를 알려줍니다. 함수 자체를 컴파일 할 때 매개 변수가 예상되는 위치를 알고 있고 호출을 컴파일 할 때 매개 변수를 넣을 위치를 알고 있습니다.
관련 문제
- 1. 옵션 매개 변수를 계산하는 것이 아니라 매개 변수를 전달하는 비용
- 2. SendReplyToReceive 매개 변수를 읽는 방법
- 3. URL에서 xml을 읽는 것
- 4. apprequest php에서 데이터 매개 변수를 읽는 중
- 5. URL에 해시 매개 변수를 읽는 방법
- 6. jQuery - 부모로부터 매개 변수를 읽는 방법
- 7. 내 프로그램에서 실행 파일의 매개 변수를 읽는
- 8. 새 XStreamConverter 매개 변수를 읽는 방법?
- 9. Struts2 인터셉터 - 액션 매개 변수를 읽는 방법
- 10. 두 레지스터에서 2의 보수 값을 int로 읽는 방법
- 11. 소켓에서 한 번 읽는 것 대 큰 덩어리를 읽는 것
- 12. 소켓에서 버퍼로 읽는 것
- 13. 테이블의 절반을 읽는 것
- 14. PHP로 값을 읽는 것
- 15. urls.txt를 읽는 것
- 16. 다른 매개 변수를 기반으로 매개 변수를 채우십시오.
- 17. 파이어 폭스 북마크를 읽는 것
- 18. 비표준 크기의 이진수를 읽는 것
- 19. 자바를 사용하여 도형을 읽는 것
- 20. 자바에서 xml 파일을 읽는 것
- 21. semi-formatted data를 읽는 것
- 22. 크롬 위치 정보가 maximumAge 매개 변수를 무시하는 것 같습니다.
- 23. 다른 뷰에서 하나의 뷰 매개 변수를 가져 오는 것
- 24. s3에 성공적으로 업로드 할 때 Transloadit에서 매개 변수를 읽는 방법
- 25. 양식 필드 대신 쿼리 매개 변수를 읽는 POST 메서드
- 26. Struts2 : 매개 변수를 읽는 방법 <jsp:include>
- 27. C에서 선언문에 정의 된 매개 변수를 읽는 방법 #
- 28. 전달 된 매개 변수를 WPF UserControl에서 읽는 방법?
- 29. 제거 프로그램에 주어진 명령 줄 매개 변수를 읽는 방법은 무엇입니까?
- 30. CherryPy에서 HTML 매개 변수를 읽는 방법? 내가 html 파일이
"호출 규칙"에 대해 Google이 있으십시오. – blueshift
호출 규칙과 IRQ 함수에 대한 레지스터 스택 프레임의 가용성 사이에 혼란이있을 수 있습니까? – stsquad