개발 & 일상

바이트 코드와 바이너리코드 & 기계어 본문

💻 개발공부/😈 개발지식

바이트 코드와 바이너리코드 & 기계어

벵갈벵 2023. 1. 14. 18:44
728x90
반응형

사람이 이해할 수 있는 high-level language

x = 10 + 2
y = x + 4

 

기계가 이해할 수 있는 low-level language (binary/machine code)

001001 11101 11101 1111111111111000  
001000 00001 00000 0000000000001010  
001000 00001 00001 0000000000000010  
101011 11101 00001 0000000000000000  
001000 00010 00001 0000000000000100  
101011 11101 00010 0000000000000100  
001001 11101 11101 0000000000001000

이 둘을 쉽게 정의하기 위해 생각해야 할 것이 있다.

 

프로그램을 실행하는 것은 컴퓨터가 한다.

즉, 프로그램은 컴퓨터가 이해할 수 있는 형태로 작성되어 있어야 한다.

 

바이너리 코드란?

바이너리 코드는 컴퓨터가 인식할 수 있는 0과 1로 구성된 이진코드를 의미함

 

바이너리 코드(binary code)의 영어 뜻을 해석해보면

'binary'는 '둘의', '이진법의'라는 뜻이다.

컴퓨터는 모든 정보를 '0'과 '1' 두 숫자만을 이용하여 인식한다.

그렇기 때문에 컴퓨터가 인식할 수 있는 0과 1로만 구성된 코드를 '바이너리 코드'라고 말한다.

 

기계어란?

- 0과 1로 이루어진 바이너리 코드

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

- 기계어는 특정한 언어가 아닙니다.

다진 CPU 제조사에서 CPU를 만들 때 해당 CPU에서 사용하는 명령어 집합을 공개하는데, 이것을 '기계어'라고 부를 뿐입니다.

때문에 CPU가 변경되면 기계어가 달라집니다.

같은 동작을 하는 명령어지만 완전히 다른 0과 1의 나열이 될 수 있다는 말입니다.

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

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

 

바이트 코드란?


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

 가상 머신이란? JVM(Java Virtual Machine)이라고 불리며 'virtual'은 '가상의'라는 뜻이다.

어느 환경(맥, 윈도우, 리눅스)에 상관없이 자바 프로그램을 실행할 수 있도록 도와주는 프로그램이다. 


- CPU가 아닌 가상 머신에서 이해할 수 있는 코드를 위한 이진 표현볍입니다.

   즉, 가상 머신이 이해 할 수 있는 0과 1로 구성된 이진 코드를 의미합니다.

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

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

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

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

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

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

   바이트 코드(Byte code)의 영어 뜻에서 유추해볼 수 있듯이

   자바 컴파일러에 의해 변환되는 코드의 명령어 크기가 1바이트이기 때문에 바이트 코드라 불린다.

  자바 바이트 코드의 확장자는 '. class'이다.

  자바 바이트 코드는 JVM만 설치되어 있다면 어떤 OS든 실행될 수 있다.

 

 OS란? Operating System의 약자로 컴퓨터 시스템의 자원들을 효율적으로 관리하며 사용자가 컴퓨터를 편리하고, 효과적으로 사용할 수 있도록 환경을 제공하는 여러 프로그램들이다.

 

 OS의 종류 : WIndows 98, Windows10, UNIX, LINUX, MS-DOS 등이 있다.

 

 

728x90
반응형
Comments