2013-08-08 4 views
0

누군가가 하드웨어에서 소프트웨어가 작동하는 방식을 설명하는 리소스에 대해 설명하거나 안내 할 수 있습니까? 예를 들어 개인 또는 공용 변수를 선언하면 하드웨어에서 어떻게 적용됩니까? 모든 명령이 하드웨어에서 발생해야하므로 공개 및 비공개라는 사실,이 무결성은 어떻게 유지됩니까?하드웨어에 적용되는 변수 범위

답변

1

에게 액세스 권한 (public/private 등) 컴파일러 자바 가상 머신 (JVM)에 의해 관리됩니다. 예 : Java 라이브러리를로드하면 필드에 대한 액세스 권한을 동적으로 변경하여 public으로 만들 수 있습니다. 즉각적인 하드웨어 아날로그는 없습니다.

자바 프로그램과 하드웨어 사이에는 너무 많은 레이어가있어이 질문은 대답하기가 어렵습니다. 자바 코드는 자바 바이트 코드 (기계어 코드와 유사)이되고 직접 메모리 액세스 권한이 없습니다. JVM은이 인터페이스를 제공하고 필요에 따라 코드를 머신 코드에 다시 컴파일하지만 이는 주로 여러분에게 숨겨져 있습니다.

하드웨어와 소프트웨어 간의 인터페이스에 관심이 있다면 C 및 C++에서 코드를 작성하고 생성 된 결과 기계 코드/어셈블러를 살펴볼 것입니다. C/C++은 하드웨어에 훨씬 가깝고 진행 상황에 대한 감사를드립니다.

1

privatepublic을 적용하는 컴파일러입니다. 기계가 아닙니다.

Java는 컴파일 된 언어이며, 컴파일되면 컴퓨터 코드로 변환됩니다. 프로그램이

1

이 하드웨어에 있지만, 컴파일 시간 만에 적용되지 않습니다 컴파일 동안

개인 - 공개 범위가 적용됩니다. 변수는 포인터가있는 한 어디서나 (또는 ​​java = D 인 경우 jni를 통해) 액세스 할 수 있다는 것을 의미하는 메모리의 한 지점에 불과합니다. 즉, .class 파일을 컴파일 할 때 액세스 권한이 처리되고 적용됩니다.

자바에서
1

이 정보는 기계어 코드보다 상위 레벨에서 처리됩니다. 기계 자체는 메모리 주소와 값에 대해서만 이해합니다. 다른 클래스의 개인 필드에 액세스하려고해도 신경 쓰지 않습니다. 가시성 규칙을 추적하고 클래스의 내부 표현을 사용하여이를 적용하는 컴파일러입니다. 컴파일 할 때 메서드 및 속성에 액세스하는 객체 유형이 확인되어 해당 이름 (예 : bar, foo.bar())을 확인할 수 있는지 확인합니다. 이것은 언어에 따라 범위 지정 및 기타 여러 가지 사항을 고려합니다.