 Machine code is a computer program written in machine language instructions that can be executed directly by a computer's central processing unit CPU. Each instruction causes a CPU to perform a very specific task, such as a load, a jump, or an ALU operation on a unit of data in a CPU register or memory. Machine code is a strictly numerical language which is intended to run as fast as possible, and may be regarded as the lowest level representation of a compile or a fumbled computer program or as a primitive and hardware dependent programming language. While it is possible to write programs directly in machine code, it is tedious and error-prone to manage individual bits and calculate numerical addresses and constants manually. For this reason, programs are very rarely written directly in machine code in modern contexts, but may be done for low-level debugging, program patching, and assembly language disassembly. The overwhelming majority of practical programs today are written in higher-level languages or assembly language. The source code is then translated to executable machine code by utilities such as compilers, assemblers, handlinkers, with the important exception of interpreted programs one which are not translated into machine code. However, the interpreter itself, which may be seen as an executor or processor, performing the instructions of the source code, typically consists of directly executable machine code generated from assembly or high-level language source code. Machine code is by definition the lowest level of programming detail visible to the programmer, but internally many processors use microcode or optimize and transform machine code instructions into sequences of micro-ops. This is not generally considered to be a machine code per Southeast.