# Llenguatge de màquina

El Llenguatge màquina o codi màquina és un sistema d'instruccions codificat en codi binari que poden entendre els microprocessadors.
El conjunt d'instruccions d'aquest llenguatge depèn del fabricant del processador tot i que s'acostumen a basar sobre un estàndard, que depèn de la família de processador sobre el que es treballa (per exemple, x86). El llenguatge d'assemblador (o ensamblador) consisteix en un seguit de nemotècnics per aquestes combinacions binàries, i normalment està format per instruccions amb arguments o sense.
Els principals inconvenients d'aquest llenguatge és que no són intel·ligibles pels humans i que depenen del model de processador. És per això que s'utilitzen els llenguatges de programació, molt més senzills d'aprendre i entendre, i els compiladors, que tradueixen aquests programes al codi màquina del processador que necessitem fer servir.

## Instruccions del llenguatge màquina

Les "paraules" d'un llenguatge màquina són anomenades instruccions, cada una de les quals produeix una acció elemental a la UCP, com llegir dades d'una adreça de la memòria. Les instruccions són patrons diferents de bits corresponents a diferents ordres per la màquina.
Cada model d'UCP té el seu propi llenguatge màquina, tot i que hi ha similituds considerables entre alguns d'ells. Si la UCP de A entén el llenguatge sencer de la UCP B es diu que A és compatible amb B. La UCP B pot no ser compatible amb A, ja que A pot conèixer alguns codis que B no reconeix.
Alguns llenguatges màquina assignen el mateix nombre de bits a totes les seves instruccions, mentre que en altres llenguatges la longitud de les instruccions és variable. L'organització dels patrons depèn enormement de l'especificació del llenguatge. Normalment es divideix una instrucció en camps, on un camp especifica l'operació exacta (com per exemple "add"). Altres camps poden especificar el tipus dels operands, la seva localització en la memòria, o el seu valor directament (els operands inclosos en una operació directament són anomenats immediats).

## Programes

Un programa és una seqüència d'instruccions que són executades per una UCP. Mentre els processadors simples executen les instruccions una rere l'altra, els processadors superescalars són capaços d'executar diverses instruccions simultàniament..
El flux del programa pot ésser influenciat per una instrucció jump, que transfereixen l'execució del programa a una instrucció en un posició diferent del codi que la següent. Els Salts condicionals són obeïts (l'execució continua en un altre adreça)o no (l'execució continua a la següent instrucció) depenent de la condició establerta.

## Llenguatges assembladors

Els humans utilitzem codis mnemònics per a referir-nos a les instruccions de llenguatge màquina. Aquest llenguatge més llegible s'anomena llenguatge d'assemblador, i consisteix en una barreja de nombres binaris, nombres hexadecimals i paraules curtes.
FIFO: Es basa en la idea que el primer fitxer que arribi a la cua sera el primer a sortir.
Per exemple, al processador Zilog Z80, el codi màquina 00000101 fa que la UCP decrementi el registre del processador B. En llenguatge d'assemblador aquesta mateixa instrucció s'escriuria DEC B.

## Vegeu també

* Llenguatge de programació de baix nivell
* Llenguatge d'assemblador
* Màquina de Turing
* CISC
* RISC
* VLIW

## Referències

* ↑ «What is machine language?» (en anglès). www.computerhope.com, 14-05-2017.
* ↑ «Machine Language For Beginners - Introduction» (en anglès). www.atariarchives.org. [Consulta: 14 maig 2017].
* ↑ org, kjell at ieee dot. «Example of Machine Language» (en anglès). chortle.ccsu.edu. [Consulta: 14 maig 2017].