Escreva ou abra um programa
Comece com um exemplo, digite seu próprio assembly ou abra um arquivo .s. Coloque os dados em .data e o código em .text.
Digite assembly RV32IM com rótulos e pseudoinstruções e execute em velocidade máxima ou uma instrução por vez.
Defina breakpoints, volte passos e acompanhe registradores, memória, código de máquina e console enquanto o programa roda.
Carregando o simulador de RISC-V…
Comece com um exemplo, digite seu próprio assembly ou abra um arquivo .s. Coloque os dados em .data e o código em .text.
Clique em Executar para ir em velocidade máxima, ou em Passo para executar uma instrução e ver quais registradores e posições de memória mudaram. Clique ao lado do número de uma linha para definir um breakpoint.
A saída e a entrada acontecem no console. Confira registradores e memória, volte passos para descobrir onde algo deu errado e copie o código de máquina em hex.
Avançou um passo a mais? Voltar um passo desfaz as últimas instruções, incluindo registradores, memória e saída, para você olhar de novo sem executar desde o início.
call sobrescreve ra. Uma função que chama outra precisa salvar ra na pilha antes e restaurá-lo antes de ret, como no exemplo do fatorial.
A aba de código de máquina conta quantas vezes cada instrução foi executada. Um corpo de loop executado uma vez a mais ou nunca executado aponta direto para um desvio errado.
Precisa de uma ilustração do seu projeto de processador ou de um clipe para seu curso? Crie com a WaveSpeed AI.
Crie ilustrações em estilo de diagrama e capas para slides e relatórios de laboratório.
Transforme uma ideia em um clipe explicativo curto para sua turma.
Transforme o esboço de uma placa ou de um encapsulamento de chip em um modelo 3D.
$1 em créditos grátis para novas contas elegíveis. Sem cartão. Os geradores têm requisitos próprios de conta e créditos. O Simulador de RISC-V é grátis.
Sim. Este simulador de RISC-V online é grátis, sem conta, sem limite de execuções e sem nada para instalar.
O conjunto base de inteiros de 32 bits (RV32I), a extensão M para multiplicação, divisão e resto, e leituras dos contadores cycle, time e instret — o conjunto de instruções principal ensinado em disciplinas de arquitetura de computadores e assembly.
A maioria, sim. O código começa em 0x00400000 e os dados em 0x10010000, e as chamadas de sistema usam os mesmos números (a7 = 1 imprime inteiro, 4 imprime string, 5 lê inteiro, 10 sai e assim por diante) dos simuladores didáticos mais comuns. A aba Referência lista todas.
Coloque o número da chamada em a7 e o argumento em a0, depois execute ecall. Quando o programa lê, o console pede a entrada: digite-a e pressione Enter. Você também pode digitar antes de o programa pedir.
A contagem de instruções é exata. A contagem de ciclos é uma estimativa para um núcleo simples em ordem: 1 ciclo por instrução, 2 por load, 3 por salto ou desvio tomado, 3 por multiplicação e 33 por divisão.
Sim. A aba Código de máquina mostra o endereço, a palavra hex e a forma decodificada de cada instrução. Copie em hex, uma palavra por linha, ou baixe um arquivo .hex ou .bin bruto.
Words devem ser lidas e escritas em endereços múltiplos de 4, e halfwords em múltiplos de 2. Coloque .align 2 antes dos dados de words ou confira o endereço calculado. O erro indica o endereço e a linha.
Sim. Voltar um passo desfaz até as últimas 4.096 instruções, incluindo registradores, memória e saída, para você encontrar um bug sem executar desde o início.
Não. A montagem e a execução acontecem no seu navegador, e seu programa é salvo no armazenamento deste navegador para continuar aqui na próxima vez.
Grátis, privado e pronto quando você estiver.