Section courante

A propos

Section administrative du site

Voici l'algorithme simplifiés des instructions du microprocesseur de la famille des 80x86 :

MODULE AAA
   * Vaut 1 si c'est vrai
   retenue d'ALAL > 0F9h
   SI ( ( AL ∩ 0Fh > 9 ) U ( AF = 1 ) ALORS
      AL ← ( AL + 6 ) ∩ 0Fh
      AHAH + 1 + retenue d'AL
      Drapeau AF ← 1
      Drapeau CF ← 1
   SINON
      AL ← 0Fh
      Drapeau AF ← 0
      Drapeau CF ← 0
   FIN SI

MODULE AAD(immédiat 8)
   ALAH x immédiat 8 bits + AL
   AH ← 00h

MODULE AAM(immédiat 8)
   AHAL ÷ immédiat 8
   ALAL MOD immédiat 8

MODULE AAS
   * Vaut 1 si c'est vrai
   AL inférieurAL < 6
   SI ( AL ∩ 0Ah ) U ( AF = 1 ) ALORS
      AL ← ( AL - 6 ) ∩ 0Fh
      AHAH - 1 – AL inférieur
      Drapeau CF ← 1
      Drapeau AF ← 1
   SINON
      ALAL ∩ 0Fh
      Drapeau CF ← 0
      Drapeau AF ← 0
   FIN SI

MODULE ADC(Opérande Cible,Opérande Source)
   Opérande CibleOpérande Cible + Quantité Source + drapeau CF

MODULE ADCX(dest,source)
   SI taille de l'opérande est 64 bits ALORS
      CF:dest(63..0) ← dest(63..0) + source(63..0) + CF
   SINON
      CF:dest(31..0) ← dest(31..0) + source(31..0) + CF
   FIN SI

MODULE ADD(Opérande Cible,Opérande Source)
   Opérande CibleOpérande Cible + Quantité Source
   drapeau CF ← retenue

MODULE ADDPD(dest,source)
   dest(0..63) ← dest(0..63) + source(0..63)
   dest(64..12) ← dest(64..12) + source(64..127)

MODULE ADDPS(dest,source)
   dest(31..0) ← dest(31..0) + source(31..0)
   dest(63..32) ← dest(63..32) + source(63..32)
   dest(95..64) ← dest(95..64) + source(95..64)
   dest(127..96) ← dest(127..96) + source(127..96)

MODULE ADDSD(dest,source)
   dest(0..63) ← dest(0..63) + source(0..63)

MODULE ADDSS(dest,source)
   dest(31..0) ← dest(31..0) + source(31..0)

MODULE ADDSUBPD(dest,source)
   dest(0..63) ← dest(0..63) - source(0..63)
   dest(64..127) ← dest(64..127) + source(64..127)

MODULE ADDSUBPS(dest,source)
   dest(0..31) ← dest(0..31) - source(0..31)
   dest(32..63) ← dest(32..63) + source(32..63)
   dest(64..95) ← dest(64..95) - source(64..95)
   dest(96..127) ← dest(96..127) + source(96..127)

MODULE AESDEC(dest,source)
   STATE ← dest
   RoundKey ← source
   STATE ← InvShiftRows( STATE )
   STATE ← InvSubBytes( STATE )
   STATE ← InvMixColumns( STATE )
   dest(127..0) ← STATE XOR RoundKey

MODULE AESDECLAST(dest,source)
   STATE ← dest
   RoundKey ← source
   STATE ← InvShiftRows( STATE )
   STATE ← InvSubBytes( STATE )
   dest(127..0) ← STATE XOR RoundKey

MODULE AESENC(dest,source)
   STATE ← dest
   RoundKey ← source
   STATE ← ShiftRows( STATE )
   STATE ← SubBytes( STATE )
   STATE ← MixColumns( STATE )
   dest(127..0) ← STATE XOR RoundKey

MODULE AESENCLAST(dest,source)
   STATE ← dest
   RoundKey ← source
   STATE ← ShiftRows( STATE )
   STATE ← SubBytes( STATE )
   dest(127..0) ← STATE XOR RoundKey

MODULE AESIMC(dest,source)
   dest(127..0) ← InvMixColumns( source )

MODULE AESKEYGENASSIST(dest,source,immediat)
   X3(31..0) ← source(127..96)
   X2(31..0) ← source(95..64)
   X1(31..0) ← source(63..32)
   X0(31..0) ← source(31..0)
   RCON(31..0) ← ZeroExtend(immediat(7..0))
   dest(31..0) ← SubWord(X1)
   dest(63..32) ← RotWord( SubWord(X1) ) XOR RCON
   dest(95..64) ← SubWord(X3)
   dest(127..96) ← RotWord( SubWord(X3) ) XOR RCON

MODULE AND(Opérande Cible,Opérande Source)
   Opérande CibleOpérande CibleOpérande Source
   drapeau CF ← 0
   drapeau OF ← 0

MODULE ANDNPD(dest,source)
   dest ← ¬ destsource

MODULE ANDNPS(dest,source)
   dest ← ¬ destsource

...



Dernière mise à jour : Vendredi, le 22 décembre 2017