Skip to content

petcomputacaoufrgs/hidracpp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Hidra

O Hidra é um ambiente de desenvolvimento integrado para as máquinas teóricas estudadas nas disciplinas de Arquitetura de Computadores da UFRGS, unificando as tarefas de montagem, simulação e depuração em um ambiente favorável ao desenvolvimento, permitindo que o aluno possa se concentrar nas diferentes características de cada arquitetura.

Além das máquinas Neander, Ahmes e Ramses, o Hidra traz a simulação da máquina de registradores REG e da máquina de pilha Volta, bem como das demais arquiteturas hipotéticas descritas ao final do livro Fundamentos de Arquitetura de Computadores, do Prof. Raul Fernando Weber, com a notável exceção da máquina Cesar, a qual está atualmente em desenvolvimento.

Download

Versões pré-compiladas para Windows estão disponíveis em:
https://github.com/petcomputacaoufrgs/hidracpp/releases/

Para desenvolver

O projeto é desenvolvido na linguagem C++, utilizando o framework Qt versão 5.15.2. Atualmente, o desenvolvimento é realizado utilizando a plataforma VS Code e a ferramenta de build utilizada é o CMake

Baixando o framework Qt

O framework Qt é a base na qual o Hidra é construído, auxiliando na criação da interface gráfica, estruturação do programa, automatização de testes, entre outros.

Passos

  • Baixe o Qt Open Source
    • Lembre que, para utilizar o Qt Open Source, é necessário seguir as obrigações das licenças GPL/LGPL
    • Caso queira montar as bibliotecas manualmente, siga este guia
  • Rode o instalador do Qt
    • Caso esteja utilizando Linux, é possível que seja necessário instalar o package "libxcb-xinerama0"
  • Crie uma conta Qt, caso já não tenha uma, e insira o nome e senha na tela inicial
  • No passo Installation Folder, determine o caminho onde o Qt será instalado e selecione a opção Instalação Personalizada
  • No passo Select Components, clique na aba Qt e após na aba Qt 5.15.2
  • Selecione o componente que reflita o compilador que você irá usar (por exemplo, Desktop gcc 64-bit no Ubuntu)
  • Na aba Developer and Designer Tools, clique na caixa Qt Design Studio, assim como em qualquer outra ferramenta utilizada posteriormente já não instalada em seu computador (por exemplo, o CMake, ou o compilador que você selecionou)
  • Prossiga com o resto da instalação até o fim.

Fazendo o build do projeto com o VS Code

Ao abrir a pasta "hidracpp" com o VSCode, instale as extensões recomendadas, em especial a extensão CMake Tools. Uma janela pedindo para configurar o projeto aparecerá; clique sim (ou, se quiser, use o comando CMake: Configure) A extensão então pedirá que você selecione um kit; por padrão, ela irá buscar por compiladores em algumas pastas específicas. Selecione o kit que corresponde ao compilador que você escolheu durante a instalação do Qt.

  • Se você instalou o compilador pelo Qt também, execute o comando da extensão CMake: Edit User-Local CMake Kits. Isso abrirá um arquivo JSON, onde você poderá manualmente adicionar um kit. Exemplo:
{
    "name": "Qt MinGW 64",
    "compilers": {
      "C": "C:\\Qt\\Tools\\mingw810_64\\bin\\gcc.exe",
      "CXX": "C:\\Qt\\Tools\\mingw810_64\\bin\\g++.exe"
    },
    "preferredGenerator": {
      "name": "MinGW Makefiles"
    },
    "environmentVariables": {
      "CMT_MINGW_PATH": "C:\\MinGW\\bin"
    }
  },

Feito isso, você provavelmente visualizará na barra inferior do vscode alguns botões provenientes da extensão, os quais permitem o build de targets específicas, iniciar o debugger, rodar o programa, entre outras funcionalidades.

Cross-Compile: compilar no Linux para Windows

Vamos nos referir ao diretório do projeto do Hidra no seu computador como $HIDRA. Por exemplo, se o Hidra está em "/home/joaozinho/Documents/pet/hidracpp", $HIDRA é "/home/joaozinho/Documents/pet/hidracpp".

O projeto "mxe" provê ferramentas para fazer cross-compile do Qt. Vamos baixar o projeto "mxe":

git clone https://github.com/mxe/mxe.git

cd mxe

Vamos nos referir ao diretório onde está o projeto "mxe" como $MXE. Por exemplo, se o repositório foi baixado em "/home/joaozinho/Documents/pet/mxe", $MXE é "/home/joaozinho/Documents/pet/mxe".

Agora, é necessário instalar algumas dependências, listadas em https://mxe.cc/#requirements. A forma exata de instalá-las vai depender da sua distribuição Linux, mas ao tentar executar o próximo passo, você deve ser avisado do que falta. O próximo passo é fazer cross-compile da parte mais essencial do Qt, necessária para o Hidra. Para tal, execute o seguinte (no diretório "$MXE"):

make qtbase

Certifique-se de que o passo anterior terminou em sucesso.

Note que o comando acima só constrói a parte mais essencial. Se algum dia precisarmos de features fora do qtbase, é necessário também executar make qt5.

Precisamos que as ferramentas do Qt que acabamos de construir estejam visíveis. Para tal, você precisa executar o seguinte comando:

export PATH="$MXE/usr/bin:$PATH"

Agora, vamos ao diretório do Hidra ("$HIDRA").

cd $HIDRA

Vamos criar um diretório novo para colocar nossos artefatos. Vamos chamá-lo "$HIDRA/build-cross-compile". Execute o seguinte, no diretório "$HIDRA":

mkdir build-cross-compile

cd build-cross-compile

Agora, precisamos gerar artefatos de compilação do Hidra. Execute o seguinte, no diretório "$HIDRA/build-cross-compile":

i686-w64-mingw32.static-qmake-qt5 ../src

Certifique-se de que o passo anterior terminou em sucesso.

Finalmente, vamos compilar o Hidra. Execute o seguinte, novamente no diretório "$HIDRA/build-cross-compile":

make

Certifique-se de que o passo anterior terminou em sucesso.

Tudo está pronto agora. O arquivo do hidra encontra-se em:

$HIDRA/build-cross-compile/release/hidra.exe