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