ori
lyszt.net couvre ori et d'autres instructions RISC-V plus en détail.
Format d'encodage
Description
ori effectue un OU bit à bit avec une constante. Sa relation à or correspond à celle de andi à and. Le i signifie immédiat, une valeur fixe encodée dans l'instruction. ori effectue un OU entre un registre et cette constante plutôt qu'entre deux registres. La règle du OU ne change pas. Une position de bit dans le résultat vaut 1 lorsque l'un ou l'autre des bits à cet endroit vaut 1, donc la constante définit les bits que vous choisissez. La page or couvre l'opération.
La forme de ori apparaît ci-dessous. Elle effectue un OU entre la valeur dans rs1 et la constante imm et écrit le résultat dans rd.
ori rd, rs1, imm
Le OU active des bits et laisse les autres tels qu'ils étaient, donc ori active des drapeaux spécifiques lorsque vous savez lesquels vous voulez. La ligne suivante active le troisième bit en partant de la droite dans t0 et laisse tous les autres bits inchangés. Le préfixe 0b marque une constante binaire.
ori t0, t0, 0b100
Les registres de configuration, les drapeaux de permission et les mots d'état contiennent des bits indépendants activés et désactivés, et ori active ceux choisis en une seule instruction sans registre de masque.
Le manuel RISC-V indique que l'immédiat de 12 bits est étendu en signe à 32 bits avant l'opération. Une constante négative a donc tous ses bits supérieurs à 1, et ori avec -1 met tous les bits du résultat à 1.
La constante est limitée à 12 bits, comme avec andi et addi. Pour définir des bits en dehors de cette plage, chargez le masque plus large dans un registre avec li et utilisez or.
Exemple
li t0, 0 ori t1, t0, 0xf # t1 = 0xf
