Conjunt d'instruccions x86

De la Viquipèdia, l'enciclopèdia lliure
Una llista de conjunt X86 d'una funció que afegeix dos nombres complexos. La funció pren tres paràmetres: un punter a una estructura composta per dos nombres de coma flotant de 80 bits, que són les parts real i imaginària del nombre complex, que representen el primer nombre complex a sumar (eax, [ebp+0x08]), un punter al segon nombre a afegir (ecx, [ebp+0x0C]) i un punter a un nombre complex que rep el resultat (edx, [ebp+0x10]). La funció es compon principalment d'instruccions de coma flotant per intercanviar informació entre la RAM i la unitat de coma flotant (FPU). La funció utilitza la convenció de crida STDCALL.

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]

  1. «Re: Intel Processor Identification and the CPUID Instruction». [Consulta: 21 abril 2013].
  2. «Guide to x86 Assembly» (en anglès). https://www.cs.virginia.edu.+[Consulta: 31 agost 2023].
  3. «X86 Opcode and Instruction Reference» (en anglès). http://ref.x86asm.ne.+[Consulta: 31 agost 2023].
  4. «x86 and amd64 instruction reference» (en anglès). https://www.felixcloutier.com.+[Consulta: 31 agost 2023].