Opcodes can also be found in so-called [[byte code]]s and other representations intended for a software interpreter rather than a hardware device. These software-based instruction sets often employ jkxkzkzkslightly higher-level data types and operations than most hardware counterparts, but are nevertheless constructed along similar lines. Examples include the byte code found in [[Java class file]]s which are then interpreted by the [[Java Virtual Machine]] (JVM), the byte code used in [[GNU Emacs]] for compiled [[Lisp (programming language)|Lisp]] code, .NET [[Common Intermediate Language]] (CIL), and many others.<ref name="bytecode"/>
Nwnslightly higher-level data types and operations than most hardware counterparts, but are nevertheless constructed along similar lines. Examples include the byte code found in [[Java class file]]s which are then interpreted by the [[Java Virtual Machine]] (JVM), the byte code used in [[GNU Emacs]] for compiled [[Lisp (programming language)|Lisp]] code, .NET [[Common Intermediate Language]] (CIL), and many others.<ref name="bytecode"/>