or
lyszt.net couvre or et d'autres instructions RISC-V plus en détail.
Format d'encodage
Description
or est une instruction bit à bit, elle agit donc indépendamment sur les 32 bits d'un registre (la page and explique cela). À une position de bit, le résultat est 1 si l'un des bits d'entrée est 1 ou si les deux le sont. Le résultat est 0 uniquement lorsque les deux entrées sont 0. La forme ci-dessous applique cela aux 32 positions de rs1 et rs2 et écrit le résultat dans rd.
or rd, rs1, rs2
OR met des bits à 1. Pour activer un bit et laisser les autres tels quels, on fait un OR de la valeur avec un masque qui a un 1 uniquement à cette position. Les réglages et les drapeaux regroupés dans un seul registre sont activés de cette manière.
OR fusionne aussi des valeurs. Lorsque deux valeurs sont décalées vers des positions qui ne se chevauchent pas, un seul OR les combine en un seul registre. Des valeurs distinctes de rouge, vert et bleu se combinent en une seule couleur de la même manière.
Le manuel RISC-V liste or parmi les opérations registre-registre. Elle lit les registres sources rs1 et rs2, effectue un OR logique bit à bit et écrit le résultat dans le registre de destination rd.
OR ne peut que mettre des bits à 1. Effacer un bit nécessite un AND avec un masque, et inverser un bit nécessite un XOR. ori est la version qui fait un OR d'un registre avec une constante fixe.
Exemple
li t0, 0b1100 li t1, 0b0011 or t2, t0, t1 # t2 = 0b1111
