본문 바로가기
IT 용어/바이너리, 바이트 코드

바이너리와 바이트 코드란?(+ 기계어란?)

by HP_Factory 2021. 1. 15.

기계어란?

기계어

- 0과 1로 이루어진 바이너리 코드입니다.

- 기계어가 이진코드로 이루어졌을 뿐이지 모든 이진코드가 기계어인 것은 아닙니다. 즉, 바이너리 코드 != 기계어

- 기계어는 특정한 언어가 아닙니다. ( 다진 CPU 제조사에서 CPU를 만들 때 해당 CPU에서 사용하는 명령어 집합을 공개하는데, 이것을 '기계어'라고 부를 뿐입니다. 때문에 CPU가 변겨오디면 기계어가 달라집니다. 같은 동작을 하는 명령어지만 완전히 다른 0과 1의 나열이 될 수 있다는 말입니다.

- 아주 기본적인 연산자들은 서로 호환되는 편입니다.

- 같은 회사의 CPU라도 버전 별로 다른 명령을 포함할 수 있으며 다른 회사라도 같은 명령어 집합을 공유할 수 도 있습니다.

 

 

이너리 코드란(이진코드)?

바이너리 코드? 이진코드?

컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드를 의미합니다.

 

 

바이트 코드란?

바이트 코드?

- CPU가 이해할 수 있는 언어가 바이너리 코드라면 바이트 코드는 VM(Virtual Machine, 가상머신)이 이해할 수 있는 언어입니다. 

- CPU가 아닌 가상 머신에서 이해할 수 있는 코드를 위한 이진 표현볍입니다. 즉, 가상 머신이 이해 할 수 있는 0과 1로 구성된 이진 코드를 의미합니다.

- 어떤 플랫폼에도 종속되지 않고 실행될 수 있는 가산 머신용 기계어 코드입니다.

- 고급언어로 작성된 소스코드를 가상 머신이 이해할 수 있는 중간 코드로 컴파일한 것을 말합니다.

Ex) 자바 소스파일(고급언어) -> 자바 컴파일러 -> 목적파일(JVM이 이해할 수 있는 바이트 코드로 이루어져있습니다.)

- 바이트 코드는 다시 실시간 번역기 또는 저스트 인 타임(Just-In-Time, JIT) 컴파일러에 의해 바이너리 코드로 변환됩니다.

- CPU가 텍스트를 이해하지 못하듯이 가상 머신 또한 텍스트를 이해하지 못합니다.

- JAVA의 가상 머신은 JVM이라고 하며 JVM을 위한 바이트 코드를 자바 바이트 코드라고 합니다.

 

댓글