바이트코드: 두 판 사이의 차이

위키백과, 우리 모두의 백과사전.
내용 삭제됨 내용 추가됨
ToePeu bot (토론 | 기여)
잔글 Robot: Automated text replacement (-[[자바 프로그래밍 언어| +[[자바 (프로그래밍 언어)|)
잔글편집 요약 없음
1번째 줄: 1번째 줄:
'''바이트코드'''({{llang|en|Bytecode}})는 특정 하드웨어가 아닌 [[가상 기계]]에서 돌아가는 [[컴퓨터 소프트웨어|실행 프로그램]]을 위한 [[이진법|이진]] 표현법이다. 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에, 보통 [[기계어]]보다 더 [[추상화 (컴퓨터 과학)|추상적]]이다.
'''바이트코드'''({{llang|en|Bytecode}})는 특정 하드웨어가 아닌 [[가상 컴퓨터]]에서 돌아가는 [[컴퓨터 소프트웨어|실행 프로그램]]을 위한 [[이진법|이진]] 표현법이다. 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에, 보통 [[기계어]]보다 더 [[추상화 (컴퓨터 과학)|추상적]]이다.


역사적으로 바이트코드는 대부분의 명령 집합이 0개 이상의 매개 변수를 갖는 1[[바이트]] 크기의 [[동작 코드]](opcode)였기 때문에 바이트코드라 불리게 되었다. 바이트코드는 특정 하드웨어에 대한 의존성을 줄이고, [[인터프리터|인터프리팅]]도 쉬운 결과물을 생성하고자 하는 [[프로그래밍 언어]]에 의해, 출력 코드의 한 형태로 사용된다. [[컴파일러|컴파일]]되어 만들어진 바이트코드는 특정 하드웨어의 기계 코드를 만드는 [[컴파일러]]의 입력으로 사용되거나, 가상 기계에서 바로 실행된다.
역사적으로 바이트코드는 대부분의 명령 집합이 0개 이상의 매개 변수를 갖는 1[[바이트]] 크기의 [[동작 코드]](opcode)였기 때문에 바이트코드라 불리게 되었다. 바이트코드는 특정 하드웨어에 대한 의존성을 줄이고, [[인터프리터|인터프리팅]]도 쉬운 결과물을 생성하고자 하는 [[프로그래밍 언어]]에 의해, 출력 코드의 한 형태로 사용된다. [[컴파일러|컴파일]]되어 만들어진 바이트코드는 특정 하드웨어의 기계 코드를 만드는 [[컴파일러]]의 입력으로 사용되거나, 가상 컴퓨터에서 바로 실행된다.


사람이 읽기 쉽도록 쓰여진 [[소스 코드]]와 비교하면, 바이트 코드는 덜 추상적이며, 더 간결하고, 더 [[컴퓨터]] 중심적이다. 예를 들어 바이트코드는 변수의 접근 범위(지역변수 또는 전역변수 인지 여부) 등과 같은 의미 분석 단계의 결과를 부호화한다. 그래서 일반적으로 소스 코드를 직접 분석/실행하는 것보다 더 좋은 성능을 갖는다.
사람이 읽기 쉽도록 쓰여진 [[소스 코드]]와 비교하면, 바이트 코드는 덜 추상적이며, 더 간결하고, 더 [[컴퓨터]] 중심적이다. 예를 들어 바이트코드는 변수의 접근 범위(지역변수 또는 전역변수 인지 여부) 등과 같은 의미 분석 단계의 결과를 부호화한다. 그래서 일반적으로 소스 코드를 직접 분석/실행하는 것보다 더 좋은 성능을 보여 준다.


바이트코드 프로그램은 보통 한번에 하나의 명령어를 읽은 후 실행한다. 이러한 형태의 바이트코드 [[인터프리터]]는 높은 이식성을 갖는다. 또 다른 형태로서 실시간 번역기 또는 저스트 인 타임(just-in-time, JIT) 컴파일러라 불리는 시스템은 실행 중에 필요에 따라서 바이트코드를 기계어로 번역한다. 이 방법은 가상 기계의 이식성을 없애지만, 바이트코드 자체에 대한 이식성을 잃지는 않는다. 예를 들어, [[자바 (프로그래밍 언어)|자바]]와 [[C 샤프|C#]] 코드는 보통 바이트코드 형태로 컴파일되어 저장되며, 실행 전에 JIT 컴파일러에 의해 기계 코드로 번역된다. 이 번역으로 인해 프로그램 실행 전에 지연시간이 발생하게 되지만, 보통 인터프리터보다는 훨씬 좋은 성능을 갖는다.
바이트코드 프로그램은 보통 한번에 하나의 명령어를 읽은 후 실행한다. 이러한 형태의 바이트코드 [[인터프리터]]는 높은 이식성을 갖는다. 또 다른 형태로서 실시간 번역기 또는 저스트 인 타임(just-in-time, JIT) 컴파일러라 불리는 시스템은 실행 중에 필요에 따라서 바이트코드를 기계어로 번역한다. 이 방법은 가상 컴퓨터의 이식성을 없애지만, 바이트코드 자체에 대한 이식성을 잃지는 않는다. 예를 들어, [[자바 (프로그래밍 언어)|자바]]와 [[C 샤프|C#]] 코드는 보통 바이트코드 형태로 컴파일되어 저장되며, 실행 전에 JIT 컴파일러에 의해 기계 코드로 번역된다. 이 번역으로 인해 프로그램 실행 전에 지연시간이 발생하게 되지만, 보통 인터프리터보다는 훨씬 좋은 성능을 보여 준다.


== 주요 구현 ==
== 주요 구현 ==
12번째 줄: 12번째 줄:
* [[어도비 플래시]] 오브젝트
* [[어도비 플래시]] 오브젝트


[[분류: 시스템 소프트웨어]]
[[분류:시스템 소프트웨어]]
[[분류:가상화 소프트웨어]]


[[ca:Bytecode (Java)]]
[[ca:Bytecode (Java)]]

2008년 1월 20일 (일) 01:50 판

바이트코드(영어: Bytecode)는 특정 하드웨어가 아닌 가상 컴퓨터에서 돌아가는 실행 프로그램을 위한 이진 표현법이다. 하드웨어가 아닌 소프트웨어에 의해 처리되기 때문에, 보통 기계어보다 더 추상적이다.

역사적으로 바이트코드는 대부분의 명령 집합이 0개 이상의 매개 변수를 갖는 1바이트 크기의 동작 코드(opcode)였기 때문에 바이트코드라 불리게 되었다. 바이트코드는 특정 하드웨어에 대한 의존성을 줄이고, 인터프리팅도 쉬운 결과물을 생성하고자 하는 프로그래밍 언어에 의해, 출력 코드의 한 형태로 사용된다. 컴파일되어 만들어진 바이트코드는 특정 하드웨어의 기계 코드를 만드는 컴파일러의 입력으로 사용되거나, 가상 컴퓨터에서 바로 실행된다.

사람이 읽기 쉽도록 쓰여진 소스 코드와 비교하면, 바이트 코드는 덜 추상적이며, 더 간결하고, 더 컴퓨터 중심적이다. 예를 들어 바이트코드는 변수의 접근 범위(지역변수 또는 전역변수 인지 여부) 등과 같은 의미 분석 단계의 결과를 부호화한다. 그래서 일반적으로 소스 코드를 직접 분석/실행하는 것보다 더 좋은 성능을 보여 준다.

바이트코드 프로그램은 보통 한번에 하나의 명령어를 읽은 후 실행한다. 이러한 형태의 바이트코드 인터프리터는 높은 이식성을 갖는다. 또 다른 형태로서 실시간 번역기 또는 저스트 인 타임(just-in-time, JIT) 컴파일러라 불리는 시스템은 실행 중에 필요에 따라서 바이트코드를 기계어로 번역한다. 이 방법은 가상 컴퓨터의 이식성을 없애지만, 바이트코드 자체에 대한 이식성을 잃지는 않는다. 예를 들어, 자바C# 코드는 보통 바이트코드 형태로 컴파일되어 저장되며, 실행 전에 JIT 컴파일러에 의해 기계 코드로 번역된다. 이 번역으로 인해 프로그램 실행 전에 지연시간이 발생하게 되지만, 보통 인터프리터보다는 훨씬 좋은 성능을 보여 준다.

주요 구현