오퍼코드
Opcode교과서와 |
기계코드 |
---|
일반적인 개념 |
지침들 |
컴퓨팅에서 opcode[1][2]([1]opcode의 [3]약자로 명령 기계 코드,[4][5][6][7][8] 명령 코드, 명령 음절, 명령 구획 또는[9][2] opstring이라고도 함)는 수행할 작업을 지정하는 기계 언어 명령의 부분입니다.opcode 자체 외에도 대부분의 명령어는 오퍼랜드의 형태로 처리할 데이터를 지정합니다.하드웨어 디바이스인 다양한 CPU의 명령어 집합 아키텍처에 사용되는 opcode와 더불어 바이트 코드 사양의 일부로서 추상 컴퓨팅 머신에서도 사용할 수 있습니다.
개요
opcode의 사양 및 형식은 일반 CPU 또는 보다 전문화된 [10]처리장치일 수 있는 해당 프로세서의 명령 집합 아키텍처(ISA)에 배치되어 있다.소정의 명령어 세트의 opcode는 가능한 모든 opcode를 상술하는 opcode 테이블을 사용하여 기술할 수 있다.opcode 그 자체와는 별도로, 명령어는 일반적으로 동작이 동작해야 하는 오퍼랜드(즉, 데이터)에 대한 하나 이상의 지정자를 가지고 있지만, 일부 오퍼랜드에는 암묵적인 오퍼랜드가 있거나 [10]전혀 존재하지 않을 수도 있습니다.opcode 및 operand 지정자를 위한 거의 균일한 필드를 가진 명령 집합과 더 복잡한 가변 길이 [10][11]구조를 가진 다른 명령 집합(예를 들어 x86 아키텍처)이 있습니다.명령 집합은 예약된 바이트 시퀀스에 이어 기존 opcode로 구성된 새 명령의 하위 집합을 추가하는 opcode 접두사를 사용하여 확장할 수 있습니다.
오퍼랜드
아키텍처에 따라 오퍼랜드는 레지스터 값, 스택 내의 값, 기타 메모리 값, I/O 포트(메모리 매핑도 가능) 등으로 다소 복잡한 어드레싱 [citation needed]모드를 사용하여 지정 및 액세스할 수 있습니다.연산 유형에는 산술, 데이터 복사, 논리 연산 및 프로그램 제어뿐만 아니라 특수 명령(CPUID 등)[10]이 포함됩니다.
어셈블리 언어 또는 단순한 어셈블리는 니모닉 명령과 오퍼랜드를 사용하여 기계 [10]코드를 나타내는 하위 프로그래밍 언어입니다.이렇게 하면 기계 지침을 정확하게 제어할 수 있는 동시에 가독성을 높일 수 있습니다.현재 대부분의 프로그래밍은 일반적으로 읽고 [10]쓰기 쉬운 고급 프로그래밍 [12]언어를 사용하여 수행됩니다.이러한 언어는 시스템 고유의 컴파일러에 의해 컴파일(어셈블리 언어로 변환)되거나 다른 컴파일된 프로그램에서 [13]실행되어야 합니다.
소프트웨어 명령 세트
오퍼코드는 하드웨어 디바이스가 아닌 소프트웨어 인터프리터를 대상으로 한 이른바 바이트 코드 및 기타 표현에서도 찾을 수 있습니다.이러한 소프트웨어 기반 명령어 세트는 대부분의 하드웨어 명령어 세트보다 약간 높은 수준의 데이터 유형 및 작업을 사용하는 경우가 많지만, 그럼에도 불구하고 유사한 방식으로 구축됩니다.예를 들어 Java 클래스 파일에서 발견된 바이트 코드, Java Virtual Machine(JVM; Java 가상 머신)에 의해 해석되는 바이트 코드, 컴파일된 Lisp 코드에 GNU Emacs에서 사용되는 바이트 코드 등이 있습니다.NET Common Intermediate Language(CIL; 공통 중간 언어) 및 기타 다수.[14]
「 」를 참조해 주세요.
레퍼런스
- ^ a b Barron, David William (1978) [1971, 1969]. "2.1. Symbolic instructions". Written at University of Southampton, Southampton, UK. In Floretin, J. John (ed.). Assemblers and Loaders. Computer Monographs (3 ed.). New York, USA: Elsevier North-Holland Inc. p. 7. ISBN 0-444-19462-2. LCCN 78-19961. (104 페이지 이상)
- ^ a b Chiba, Shigeru (2007) [1999]. "Javassist, a Java-bytecode translator toolkit". Archived from the original on 2020-03-02. Retrieved 2016-05-27.
- ^ "Appendix B - Instruction Machine Codes" (PDF). MCS-4 Assembly Language Programming Manual - The INTELLEC 4 Microcomputer System Programming Manual (Preliminary ed.). Santa Clara, California, USA: Intel Corporation. December 1973. pp. B-1–B-8. MCS-030-1273-1. Archived (PDF) from the original on 2020-03-01. Retrieved 2020-03-02.
- ^ Raphael, Howard A., ed. (November 1974). "The Functions Of A Computer: Instruction Register And Decoder" (PDF). MCS-40 User's Manual For Logic Designers. Santa Clara, California, USA: Intel Corporation. p. viii. Archived (PDF) from the original on 2020-03-03. Retrieved 2020-03-03.
[…] Each operation that the processor can perform is identified by a unique binary number known as an instruction code. […]
- ^ Jones, Douglas W. (June 1988). "A Minimal CISC". ACM SIGARCH Computer Architecture News. New York, USA: Association for Computing Machinery (ACM). 16 (3): 56–63. doi:10.1145/48675.48684. S2CID 17280173.
- ^ Domagała, Łukasz (2012). "7.1.4. Benchmark suite". Application of CLP to instruction modulo scheduling for VLIW processors. Gliwice, Poland: Jacek Skalmierski Computer Studio. pp. 80–83 [83]. ISBN 978-83-62652-42-6. Archived from the original on 2020-03-02. Retrieved 2016-05-28.
- ^ Smotherman, Mark (2016) [2013]. "Multiple Instruction Issue". School of Computing, Clemson University. Archived from the original on 2016-05-28. Retrieved 2016-05-28.
- ^ Jones, Douglas W. (2016) [2012]. "A Minimal CISC". Computer Architecture On-Line Collection. Iowa City, USA: The University of Iowa, Department of Computer Science. Archived from the original on 2020-03-02. Retrieved 2016-05-28.
- ^ 슐먼 앤드류(2005-07-01)."Opstrings &과 기능 Digests 이진 클론을 찾는 것".박사 Dobb의 Journal1부. Vol30, 안돼.7.CMPMediaLLC.를 대신하여 서명함. 69–73.ISSN 1044-789X.#374. 2020-03-02에 원래에서 Archived.;슐먼 앤드류(2005-08-01)2020-03-02 Retrieved."Opstrings &과 기능 Digests 이진 클론을 찾는 것".박사 Dobb의 Journal2부.Vol30, 안 돼 8.CMPMediaLLC.를 대신하여 서명함. 56–61.ISSN 1044-789X.#375.그 2020-03-02에 원래에서 Archived.;슐먼 앤드류(2005-09-01)2016-05-28 Retrieved."Opstrings &과 기능 Digests 이진 클론을 찾는 것".CMPMediaLLC.제3부.권 30일 9.미국 비즈니스 매체이다.를 대신하여 서명함. 64–70.ISSN 1044-789X.#376.그 2020-03-02에 원래에서 Archived.2016-05-28 Retrieved.
- ^ a b c d e f Hennessy, John L.; Patterson, David A.; Asanović, Krste; Bakos, Jason D.; Colwell, Robert P.; Bhattacharjee, Abhishek; Conte, Thomas M.; Duato, José; Franklin, Diana; Goldberg, David; Jouppi, Norman P.; Li, Sheng; Muralimanohar, Naveen; Peterson, Gregory D.; Pinkston, Timothy M.; Ranganathan, Parthasarathy; Wood, David A.; Young, Cliff; Zaky, Amr (2017-11-23). Computer architecture: A quantitative approach (6 ed.). Cambridge, Massachusetts, USA: Morgan Kaufmann Publishers. ISBN 978-0-12811905-1. OCLC 983459758.
- ^ Mansfield, Richard (1983). "Introduction: Why Machine Language?". Machine Language For Beginners. Compute! Books (1 ed.). Greensboro, North Carolina, USA: COMPUTE! Publications, Inc., American Broadcasting Companies, Inc.; Small System Services, Inc. ISBN 0-942386-11-6. Archived from the original on 2008-02-13. Retrieved 2016-05-28.
- ^ "Programming Language Popularity". langpop.com. 2013-10-25. Archived from the original on 2015-04-11. Retrieved 2015-10-10.
- ^ Swanson, William (2001). "Introduction to Assembly Language". Swanson Technologies. Archived from the original on 2020-03-02. Retrieved 2015-10-10.
- ^ "bytecode Definition". PC Magazine. PC Magazine Encyclopedia. Archived from the original on 2012-10-06. Retrieved 2015-10-10.
추가 정보
- Hyde, Randall (2004). Write Great Code: Thinking Low-level, Writing High-level. Understanding the Machine. Vol. 1. San Francisco, California, USA: No Starch Press. p. passim. ISBN 1-59327003-8. Retrieved 2015-10-10.