Conjunt d'instruccions x86
El conjunt d'instruccions x86 fa referència al conjunt d'instruccions que admeten els microprocessadors compatibles amb x86. Les instruccions solen formar part d'un programa executable, sovint emmagatzemat com a fitxer d'ordinador i executat al processador.
El conjunt d'instruccions x86 s'ha ampliat diverses vegades, introduint registres i tipus de dades més amplis, així com noves funcionalitats.[1]
Instruccions enteres x86
[modifica]A continuació es mostra el conjunt complet d'instruccions 8086/8088 d'Intel (81 instruccions en total). La majoria, si no totes, d'aquestes instruccions estan disponibles en mode de 32 bits; només operen en registres de 32 bits (eax, ebx, etc.) i valors en lloc dels seus homòlegs de 16 bits (ax, bx, etc.). El conjunt d'instruccions actualitzat també s'agrupa segons l'arquitectura (i386, i486, i686) i de manera més general es coneix com (32 bits) x86 i (64 bits) x86-64 (també conegut com AMD64).
Instruccions originals 8086/8088
[modifica]Aquest és el conjunt d'instruccions complet del 8086/8088, però la majoria d'aquestes instruccions, si no totes, estan disponibles en la manera de 32 bits, elles simplement operarien en registres i valors de 32 bits (EAX, EBX, etc) en comptes de les seves contraparts de 16 bits (AX, BX, etc). Veure llenguatge assemblador x86 per a un tutorial ràpid per a aquesta família de processadors. El conjunt d'instruccions actualitzat també està agrupat d'acord amb l'arquitectura (i386, i486, i686) i més generalment està referit com x86_32 i x86_64 (també conegut com AMD64).[2]
Representació de nombres enters
[modifica]Els números en els registres poden representar-se de dues maneres. La primera és una representació d'enter positiu sense signe, el rang del qual serà des de 0 fins a 2n, on n és 8, 16, 32 o 64 bits depenent de la grandària del registre. La segona és una representació d'enter amb signe (complement a dos, amb un rang entre -2n-1 fins a 2n-1 - 1, on n és, igual que en l'anterior, l'ample de bits del registre, (8, 16, 32 o 64 bits).
Rang dels números d'acord amb la grandària dels registres i la seva representació com a enter amb signe i sense signe:
Grandària del registre | Enters sense signe | Enters amb signe(complement a dos) |
---|---|---|
8 bits | 0 a 255 | -128 a 127 |
16 bits | 0 a 65.535 | -32.768 a 32.767 |
32 bits | 0 a 4.294.967.295 | -2.147.483.648 a 2.147.483.647 |
64 bits | 0 a 18.446.744.073.709.551.615 | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 |
Instruccions x86
[modifica]A baix una taula amb les instruccions x86. La columna CPU indica el primer CPU que va tenir la instrucció, començant amb l'Intel 8086 i l'Intel 8088, que van ser els primers CPU de la sèrie x86: [3]
Moviment de dades | |||||
---|---|---|---|---|---|
CPU | Instrucció | Opcode | Significat | Traducció | Notes |
8086/88 | MOV | Move | Mou | En realitat és una còpia, ja que en la destinació es copia el que està en l'origen sense alterar aquest últim | |
80386 | MOVZX | Move with zero-extend | Mou amb extensió de zero | ||
80386 | MOVSX | Move with sign-extend | Mou amb extensió de signe | ||
8086/88 | XCHG | Exchange data | Intercanvia dades | ||
8086/88 | XLAT | 11010111 | Table look-up translation | Translació de cerca en taula |
- Operacions de pila
- Entrada i sortida per ports
- Conversions
- Operacions aritmètiques i lògiques
- Operacions amb bits
- Operacions amb els flags (semàfors)
- Operacions de cadenes
- Control del flux del programa
- Operacions de sincronització entre processadors [4]
Referències
[modifica]- ↑ «Re: Intel Processor Identification and the CPUID Instruction». [Consulta: 21 abril 2013].
- ↑ «Guide to x86 Assembly» (en anglès). https://www.cs.virginia.edu.+[Consulta: 31 agost 2023].
- ↑ «X86 Opcode and Instruction Reference» (en anglès). http://ref.x86asm.ne.+[Consulta: 31 agost 2023].
- ↑ «x86 and amd64 instruction reference» (en anglès). https://www.felixcloutier.com.+[Consulta: 31 agost 2023].