Assembleur RISC-V
Écrivez et exécutez de l'assembleur RISC-V dans le navigateur. Commencez par une seule instruction et progressez jusqu'aux fonctions et à la mémoire. L'assembleur et le simulateur s'exécutent tous deux dans le navigateur.
Leçons
Pays
Pays
Brésil
Le Brésil produit-il des puces ? Le Brésil conçoit des puces, du microcontrôleur RISC-V BlueMacaw aux cœurs de recherche tels que NoX, tandis que la fabrication nationale dépend de fonderies étrangères. La fonderie publique CEITEC a été dissoute par décret en 2020.
Lire l’entréePaysUkraine
L'Ukraine produit-elle des puces ? L'Ukraine n'a pas d'usine de puces. Le pays construit une industrie fabless qui conçoit des puces sur son sol et les fait fabriquer à l'étranger, en plus de détenir les plus grandes réserves de titane d'Europe.
Lire l’entréeRéférence
Arithmétique
add
Additionne deux registres.sub
Soustrait un registre d'un autre.addi
Additionne une petite constante à un registre.mul
Multiplie, en conservant les 32 bits de poids faible.mulh
32 bits de poids fort d'un produit signé.div
Division entière signée.divu
Division entière non signée.rem
Reste signé (modulo).remu
Reste non signé.neg
Inverse le signe d'un nombre.Logique binaire
Décalages
sll
Décale les bits vers la gauche (selon un registre).srl
Décale les bits vers la droite, complété par des zéros.sra
Décale vers la droite, en conservant le signe.slli
Décale vers la gauche d'une valeur fixe.srli
Décale vers la droite d'une constante, complété par des zéros.srai
Décale vers la droite d'une constante, en conservant le signe.Comparaison et affectation
Mémoire
lw
Charge un mot de 32 bits depuis la mémoire.lh
Charge un demi-mot de 16 bits (signé).lb
Charge un octet (signé).lhu
Charge un demi-mot de 16 bits (non signé).lbu
Charge un octet (non signé).sw
Écrit un mot de 32 bits en mémoire.sh
Écrit les 16 bits de poids faible.sb
Écrit les 8 bits de poids faible.la
Charge l'adresse d'une étiquette.li
Charge une constante quelconque dans un registre.mv
Copie un registre dans un autre.Branchements
beq
Saute si deux registres sont égaux.bne
Saute si deux registres diffèrent.blt
Saute si inférieur (signé).bge
Saute si supérieur ou égal (signé).bltu
Saute si inférieur (non signé).bgeu
Saute si supérieur ou égal (non signé).beqz
Saute si le registre est nul.bnez
Saute si le registre est non nul.bltz
Sautez si le registre est négatif.bgez
Effectuer un saut lorsque le registre contient zéro ou une valeur positive.bgtz
Sauter si le registre est positif.blez
Sautez lorsque le registre contient zéro ou une valeur négative.bgt
Saute si supérieur (signé).ble
Saute si inférieur ou égal (signé).Sauts et fonctions
jal
Appelle : saute et sauvegarde le point de retour.jalr
Saute vers une adresse calculée, et lie.j
Saute sans condition.jr
Saute vers une adresse contenue dans un registre.call
Appelle une fonction.ret
Retourne d'une fonction.lui
Charge une constante dans les bits de poids fort.auipc
Ajoute une constante de poids fort au PC.Système
ecall
Demande au système de faire quelque chose.nop
Ne fait rien pendant un cycle d'instruction.ebreak
Arrêter le programme à un point d'arrêt.mret
Retour depuis un gestionnaire de trappe.wfi
Attendez qu'une interruption se produise.csrrw
Échangez le contenu d'un registre avec un registre de contrôle.csrrs
Lire un registre de contrôle et y définir les bits sélectionnés.csrrc
Lire un registre de contrôle et effacer des bits dans celui-ci.csrrwi
Écrire une constante dans un registre de contrôle et lire l'ancienne valeur.csrrsi
Lire un registre de contrôle et définir des bits à partir d'une constante.csrrci
Lire un registre de contrôle et effacer les bits d'une constante.csrr
Lire un registre de contrôle.csrw
Écrire un registre dans un registre de contrôle.csrs
Définir les bits dans un registre de contrôle.csrc
Effacer les bits dans un registre de contrôle.csrwi
Écrivez une constante dans un registre de contrôle.csrsi
Définir les bits d'un registre de contrôle à partir d'une constante.csrci
Effacer les bits d'un registre de contrôle à partir d'une constante.