(이것은 매우 새로운 질문입니다).
나는 가상 머신에 대해 조금 공부하고 있습니다.
많은 것이 물리적 또는 이론적 컴퓨터와 매우 유사하게 설계되었습니다.
예를 들어 JVM이 '스택 머신'이라는 것을 읽었습니다. 그 의미는 (그리고 내가 틀렸다면 나를 수정하십시오) 그것이 모든 '임시 메모리'를 스택에 저장 하고이 스택에서 모든 opcode에 대해 작업을 수행한다는 것입니다.
예를 들어, 소스 코드 2 + 3
는 다음과 유사한 바이트 코드로 변환됩니다.
push 2
push 3
add
내 질문은 이것입니다 :
JVM은 아마도 C / C ++ 등을 사용하여 작성되었을 것입니다. 그렇다면 왜 JVM이 다음 C 코드를 실행하지 2 + 3
않습니까? ..? 내 말은, 왜 실제 컴퓨터처럼 스택이나 다른 VM '레지스터'가 필요한가?
기본 물리적 CPU가이 모든 것을 처리합니다. VM 작성자가 VM이 프로그래밍 된 언어로 '일반적인'명령어를 사용하여 해석 된 바이트 코드를 단순히 실행하지 않는 이유는 무엇입니까?
실제 하드웨어가 이미이를 위해 VM에서 하드웨어를 에뮬레이션해야하는 이유는 무엇입니까?
다시 한 번, 아주 새로운 질문입니다. 당신의 도움을 주셔서 감사합니다
printf("hi");
. 이것이 VM으로 간주됩니까? '스택'또는 '레지스터'등이 없습니다.