Section courante

A propos

Section administrative du site

Assembleur SuperH

CMP/cond

SuperH Compare Conditionally

Syntaxe

CMP/EQ Rm,Rn SI Rn = Rm ALORS T ← 1
CMP/GE Rm,Rn SI Rn • Rm avec des données signés ALORS T ← 1
CMP/GT Rm,Rn SI Rn > Rm avec des données signés ALORS T ← 1
CMP/HI Rm,Rn SI Rn > Rm avec des données non-signés ALORS T ← 1
CMP/HS Rm,Rn SI Rn • Rm avec des données non-signé ALORS T ← 1
CMP/PL Rn SI Rn > 0 ALORS T ← 1
CMP/PZ Rn SI Rn • 0 ALORS T ← 1
CMP/STR Rm,Rn SI est un octet dans Rn égale à un octet dans Rm ALORS T ← 1
CMP/EQ #imm,R0 SI R0 = imm ALORS T ← 1

Description

Cette instruction permet d'effectuer une comparaison d'un registre générale avec un registre de données et fixe le bit T à si la condition est satisfaite.

Algorithme

MODULE CMPEQ(m,n) * CMP_EQ Rm,Rn
   SI R[n] = R[m] ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPGE(m,n) * CMP_GE Rm,Rn
   SI (long)R[n] ≥ (long)R[m] ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPGT(m,n) * CMP_GT Rm,Rn
   SI (long)R[n] > (long)R[m] ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPHI(m,n) * CMP_HI Rm,Rn
   SI (unsigned long)R[n] > (unsigned long)R[m] ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPHS(m,n) * CMP_HS Rm,Rn
   SI (unsigned long)R[n] ≥ (unsigned long)R[m] ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPPL(n) * CMP_PL Rn
   SI (long)R[n] > 0 ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPPZ(n) * CMP_PZ Rn
   SI (long)R[n] ≥ 0 ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPSTR(m,n) * CMP_STR Rm,Rn
   temp ← R[n] ^ R[m]
   HH ← (temp >> 12) ∩ 000000FFh
   HL ← (temp >> 8) ∩ 000000FFh
   LH ← (temp >> 4) ∩ 000000FFh
   LL ← temp ∩ 000000FFh
   HH ← HH ET HL ET LH ET LL
   SI HH = 0 ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

MODULE CMPIM(i) * CMP_EQ #imm,R0
   SI i ∩ 080h =0 ALORS
      imm ← 000000FFh ∩ (long i)
   SINON
      imm ← FFFFFF00h U (long i)
   FIN SI
   SI R[0] = imm ALORS
      T ← 1
   SINON
      T ← 0
   FIN SI
   PC ← PC + 2

Mnémonique

Instruction Abstrait Opcode Cycle
CMP/EQ Rm,Rn Quand Rn = Rm, T ← 1 0011nnnnmmmm0000 1
CMP/GE Rm,Rn Quand signé et Rn . Rm, T ← 1 0011nnnnmmmm0011 1
CMP/GT Rm,Rn Quand signé et Rn > Rm, T ← 1 0011nnnnmmmm0111 1
CMP/HI Rm,Rn Quand non-signé et Rn > Rm, T ← 1 0011nnnnmmmm0110 1
CMP/HS Rm,Rn Quand non-signé et Rn . Rm, T ← 1 0011nnnnmmmm0010 1
CMP/PL Rn Quand Rn > 0, T ← 1 0100nnnn00010101 1
CMP/PZ Rn Quand Rn • 0, T ← 1 0100nnnn00010001 1
CMP/STR Rm,Rn Quand un octet dans Rn égale un octet dans Rm, T ← 1 0010nnnnmmmm1100 1
CMP/EQ #imm,R0 Quand R0 = imm, T ← 1 10001000iiiiiiii 1


Dernière mise à jour : Mardi, le 28 juillet 2015