Opcodes can be found in [[bytecode]]s and other representations intended for execution by a software interpreter rather than a hardware deviceinterpreters. These software-based instruction sets often employ slightly higher-level data types and operations than mostthose found in hardware counterpartsI’ll odes but are nevertheless constructed along similar lines. Examples include the byte code found in [[Java class file]]s, which are interpreted by [[Java virtual machine]]s, the byte code used in [[GNU Emacs]] for compiled [[Lisp (programming language)|Lisp]] code, and NET [[Common Intermediate Language]].<ref name="bytecode"/>