and

and

Assembleur RISC-V Référence

lyszt.net couvre and et d'autres instructions RISC-V plus en détail.

Format d'encodage

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

Description

and est une instruction bit à bit. Un registre contient 32 bits, qui sont 32 0 et 1 distincts à la suite. Une instruction bit à bit applique son opération à toutes les 32 positions indépendamment, et aucune retenue ne passe entre les positions.

Sur un seul bit, AND donne 1 uniquement lorsque les deux bits d'entrée valent 1, et 0 sinon. La forme ci-dessous applique cette règle aux 32 positions, en comparant rs1 et rs2 et en écrivant le résultat dans rd.

and rd, rs1, rs2

AND est utilisé pour le masquage, qui conserve certains bits et efface les autres. Là où le masque contient un 1, le bit d'origine est conservé. Là où le masque contient un 0, le résultat est 0. Un AND d'une valeur avec le masque 00001111 conserve les quatre bits de poids faible et efface le reste. Le masquage extrait un champ d'une valeur qui regroupe plusieurs champs.

Le manuel RISC-V liste and, or et xor parmi les opérations registre-registre. Toutes lisent les registres sources rs1 et rs2, écrivent le résultat dans le registre de destination rd et effectuent des opérations logiques bit à bit.

Dans l'exemple, 0b1100 (le préfixe 0b indique des chiffres binaires) est combiné par AND avec 0b1010. Les deux entrées ont un 1 uniquement à la position la plus à gauche, donc le résultat est 0b1000, et il va dans t2.

Exemple

li t0, 0b1100
li t1, 0b1010
and t2, t0, t1   # t2 = 0b1000