Opcode
在计算中, opcode (从操作代码(也称为指令机代码,指令代码,指令音节,指令包裹或OPSTRING )的缩写是指定要执行的操作的机器语言指令的一部分。除了OpCode本身外,大多数指令还以操作数的形式指定其将处理的数据。除了各种CPU (包括硬件设备)的指令集体系结构中使用的Opcodes外,它们还可以在抽象计算机中用作其字节代码规范的一部分。
概述
Opcodes的规格和格式在相关处理器的指令集体系结构( ISA )中列出,这可能是一般CPU或更专业的处理单元。可以通过使用OpCode表详细说明所有可能的Opcodes来描述给定指令集的Opcodes。除了OpCode本身外,尽管某些操作可能具有隐式操作数,或者根本没有操作,但通常还有一个或多个操作数字(即数据)的指示符(即数据)。有一些指令集,其中几乎具有用于OPODE和操作数指数的几乎均匀字段,还有其他字段(例如, X86体系结构)具有更复杂的可变长度结构。可以通过使用OpCode前缀来扩展说明集,该前缀添加了由保留字节序列后现有Opcodes组成的新指令的子集。
操作数
根据体系结构,操作数可以是寄存器值,堆栈中的值,其他内存值, I/O端口(也可以是内存映射)等,使用或多或少复杂的地址模式指定并访问。操作的类型包括算术,数据复制,逻辑操作和程序控制以及特殊说明(例如CPUID等)。
汇编语言或仅汇编是一种低级编程语言,它使用助记符说明和操作数来表示机器代码。这可以提高可读性,同时仍然对机器说明进行精确控制。当前,大多数编程都是使用高级编程语言完成的,这些语言通常更容易理解和写作。这些语言需要由系统特异性编译器编译(翻译成汇编语言),或通过其他编译程序运行。
软件说明集
在所谓的字节代码和其他旨在用于软件解释器而不是硬件设备的代码中,也可以找到Opcodes。这些基于软件的指令集通常比大多数硬件对应物采用略高的数据类型和操作,但仍以类似的方式构建。示例包括Java类文件中发现的字节代码,然后由Java Virtual Machine (JVM)解释,这些字节代码, GNU EMAC中使用的字节代码,用于编译的LISP代码,.NET通用中间语言(CIL )等。