# Explorar a conexão entre Organização, Assembly, Compilação e Sistema Operacional. # Objetivo Preparar para as disciplinas SO, ARQ # Pontos de referência: - [MIPS Assembly and Runtime Simulator - MARS](https://courses.missouristate.edu/KenVollmar/mars/index.htm) - [Exemplo fibonacci](http://courses.missouristate.edu/KenVollmar/MARS/Fibonacci.asm) - [Artigo sobre um plugin para MARS que parece mostrar o fluxo de dados no processador.](https://www.researchgate.net/publication/269463299_MIPS_X-Ray_A_MARS_Simulator_Plug-in_for_Teaching_Computer_Architecture/link/548c334f0cf214269f1ddd4a/download). Pode ser interessante instalar o plugin e ver até onde funciona. - [Nota no MARS sobre limitação na simulação de pipeline](http://courses.missouristate.edu/KenVollmar/mars/Help/MarsHelpLimits.html) - [Wikipedia sobre hazard](https://en.wikipedia.org/wiki/Hazard_(computer_architecture)) - [Livro apresentando assembly e conexão com C](https://cupola.gettysburg.edu/cgi/viewcontent.cgi?article=1001&context=oer) - [Slides de uma disciplina sobre compilação C para MIPS ASM](http://www.es.ele.tue.nl/education/Computation/Cmp18.pdf). É interessante que ele apresenta um diagrama de blocos de um MIPS. - [O GCC é capaz de gerar código para MIPS](https://gcc.gnu.org/onlinedocs/gcc/MIPS-Options.html). Seria interessante entender o que faz, se gera assembly, se é possível executar esse assembly no MARS. - tem um emulador e máquina virtual [qemu](https://wiki.qemu.org/Main_Page), seria interessante ver do que se trata. - [Curso de Sistemas Operacionais](http://www.it.uu.se/education/course/homepage/os/vt18/) que usa MARS para algo. Pode ser interessante entendê-lo. - [Instructables para sistema operacional simples](https://www.instructables.com/id/Make-A-Simple-Operating-System/) - Quando estava procurando por um projeto de sistema operacional simples achei este: [FreeRTOS](https://www.freertos.org/). Interessante é que é tempo real. - [No stackexchange, em 2011, tem gente recomendando minix (uns 25 anos depois dele ter sido proposto)](https://softwareengineering.stackexchange.com/questions/117973/are-there-any-os-which-are-simple-enough-for-learning) Trabalhos: 0. **Para todos** colocar o MARS para funcionar, executar, entender os exemplos. Stallings 8a. ed. p.415; Computer architecture a quantitative approach 5a. ed. p.436; 1. Explorar o plugin para mostrar o fluxo de dados; 2. Fazer uma tabela com principais comandos em C, inclusive chamada de procedimento e o assembly equivalente; 3. Fazer uma tabela de tipos de dados (primitivos e alguns estruturados) e o assembly associado ao tipo para fazer as operações mais comuns; 4. Explorar onde no material da disciplina de sistemas operacionais o MARS é usado e como é usado; - Formas de entrega: - fazer um vídeo, no estilo de uma aula da disciplina; - apresentar para mim - eu gravo, reviso, se for desejo dos autores, não uso diretamente nas aulas (mas posso regravar usando o mesmo material como base; - fazer um relatório; - fazer apresentação;