GithubHelp home page GithubHelp logo

oac-project's Introduction

Projeto de Organização de Arquitetura de Computadores

Este projeto consiste na simulação de instruções do RISCV RV32I em linguagem C. O respositório desse projeto pode ser encontrado em https://github.com/luigiminardim/OAC-project.

Neste projeto, foram implementadas as instruções dos RISCV:

  • add
  • addi
  • and
  • andi
  • auipc
  • beq
  • bne
  • bge
  • bgeu
  • blt
  • bltu
  • jal
  • jalr
  • lb
  • or
  • lbu
  • lw
  • lui
  • sltu
  • ori
  • sb
  • slli
  • slt
  • srai
  • srli
  • sub
  • sw
  • xor
  • ecall (print string, print integer, exit)

Para verificar se o simulador está funcionando corretamente deve-se utilizar o RARS para geração de códigos de teste que incluam código executável e dados. Os arquivo de código executável juntamente com o arquivo de dados verificam se todas as instruções implementadas no simulador funcionam corretamente. O código assembly que gerou os binários de dados e teste pode ser encontrado em ./assets/test.asm. Os binários de dados e código gerados por ./assets/test.asm são respectivamente ./assets/data.bin e ./assets/code.bin. Para testar o simulador utilizando os arquivos binários supracitados, basta utilizar o comando make run, em que o usuário deve ver uma saída como:

Os oito primeiros numeros primos sao : 1 3 5 7 11 13 17 19

Se o usário desejar trocar os arquivos binários de teste, basta montar os binários de dados e código no RARS e substituir os arquivos gerados em ./assets/ com os mesmos nomes.

Não se esqueça de ativar a opção "Text at Address 0" na hora de exportar os binários.

Há também testes unitários para funções internas do simulador. Estes testes unitários podem ser vistos com o comando make test, que deve gerar uma saída como:

./build/test.exe
Error: address % 4 != 0
===============================================================================
All tests passed (176 assertions in 10 test cases)

Como Utilizar

Dependências

  • g++ 9.3.0: O comando g++ é um comando de invocação do compilador GNU c++, que é utilizado para o pré-processamento, compilação, montagem e ligação do código fonte para gerar um arquivo executável. As diferentes "opções" do comando g++ permitem-nos parar este a execução do processo na fase intermédia.
  • GNU Make 4.2.1: GNU Make é uma ferramenta que controla a geração de executáveis e outros ficheiros não-fonte de um programa a partir dos ficheiros-fonte do programa.

Comandos

  • make build: Produz o executável em build/oac.exe;
  • make run: Gera o mesmo executável de make build e o inicia.
  • make test: Gera o executável de teste e o inicia.
  • make clean: Remove os arquivos objeto da pasta build/objs.
  • make reset: Remove os arquivos objeto da pasta build/.

oac-project's People

Contributors

luigiminardim avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.