bltzpseudo

bltz

pseudo
Assembleur RISC-V Référence

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

Description

bltz effectue un branchement lorsqu'un registre contient un nombre négatif. Le nom signifie « brancher si inférieur à zéro ». La forme ci-dessous saute à la position étiquetée si rs est inférieur à zéro, et continue à l'instruction suivante sinon.

bltz rs, label

L'assembleur réécrit cette pseudo-instruction en une instruction réelle. Elle devient l'instruction ci-dessous, qui compare le registre avec zero, le registre qui contient toujours 0.

blt rs, zero, label

La comparaison est signée, donc les 32 bits du registre sont lus comme un nombre qui peut être négatif. Un branchement compare deux registres et ne peut pas prendre une constante écrite dans l'instruction, c'est pourquoi le 0 provient du registre zero. Voir blt pour les branchements qui comparent deux valeurs et beq pour le fonctionnement des étiquettes.

Pour vérifier si une valeur est inférieure à zéro, placez la valeur dans un registre et utilisez bltz dessus. Les cas habituels sont le test du résultat d'une soustraction pour voir s'il est passé en dessous de zéro, et le test d'un résultat de fonction qui signale une erreur sous forme de nombre négatif.

sub t0, t1, t2
bltz t0, smaller

Les lignes ci-dessus sautent à smaller lorsque le résultat de la soustraction est inférieur à zéro. Un résultat exactement égal à 0 n'est pas négatif et continue à l'instruction suivante. Le branchement opposé, qui prend également zéro, est bgez.

Se développe en

blt rs, zero, label

L'assembleur remplace cette pseudo-instruction par la ou les instructions réelles listées ci-dessus.

Exemple

li t0, -3
bltz t0, done   # t0 < 0, so jump to 'done'