밍개발일지
기계어와 바이트코드
미미_밍
2024. 10. 11. 17:35
안드로이드 프로그래밍 책을 공부하던 와중 바이트 코드와 바이너리코드에 대한 의문이 생겨 서칭 후 바이너리코드, 기계어, 바이트코드의 차이점을 정리해 보았다. 평소에 모호하게 알던 용어는 한번쯤 정리해서 정확하게 머리속에 넣어 두자
바이너리 코드 : 0 과 1로만 이루어진 이진 코드(.obj 파일) , 컴퓨터가 이해할수 있는 형태이지만 실행할 수 없다. (cpu 가 이해할 수 없기 때문) 헤더파일 등을 합쳐야 한다. ㄱ,ㄴ 은 이해할 수 있지만 문장이나 단어로 구성되지 않았음으로 행동을 뽑아낼 수 없는것처럼 바이너리코드도 이해할 수 있는 형태이지만 실행할 수 없다.
기계어: 기계어는 0과 1로 이루어진 바이너리 코드이다. 기계어가 바이너리코드로 이루어 졌을 뿐이지 바이너리코드가 기계어인 것은 아니다. 제조사에서 cpu 만들 때 해당 cpu 에서 사용하는 명령어의 집합을 기록해 두며 이것을 기계어라고 부른다. 즉, cpu 변경되면 기계어 가 달라진다. 결론적으로 해당 cpu 가 알아들을 수 있는 명령이 이진코드(바이너리 코드)로 구성되어 있는 것이 기계어라고 말할 수 있겠다.
바이트 코드 : 가상머신이 이해할 수 있도록 0 과 1로 구성된 코드를 말한다. cpu 종속적이지 않다. 즉 가상머신이 이해할수 있는 이진코드를 말한다. 위에서 설명한 기계어는 해당 cpu 에서 이해할 수 있는 이진코드이고 바이트코드는 해당 가상머신이 이해할 수 있는 이진 코드이다. 결국 기계어나 바이트 코드나 바이너리 코드로 이루어 진다