Low-level programming language

These languages provide the programmer with full control over program memory and the underlying machine code instructions.

Programs written in low-level languages tend to be relatively non-portable, due to being optimized for a certain type of system architecture.

[1] Although few programs are written in machine languages, programmers often become adept at reading it through working with core dumps or debugging from the front panel.

Example: The same Fibonacci number calculator as above, but in x86-64 assembly language using Intel syntax: In this code example, the registers of the x86-64 processor are named and manipulated directly.

In many respects (including directory operations and memory allocation), C provides “an interface to system-dependent objects that is itself relatively system independent”.

During the late 1960s and 1970s, high-level languages that included some degree of access to low-level programming functions, such as PL/S, BLISS, BCPL, extended ALGOL and NEWP (for Burroughs large systems/Unisys Clearpath MCP systems), and C, were introduced.

Furthermore, as referenced above, the following block of C is from the GNU Compiler and shows the inline assembly ability of C. Per the GCC documentation this is a simple copy and addition code.

Front panel of a PDP-8/E minicomputer. The row of switches at the bottom can be used to toggle in a machine language program.