{"id":15060099,"url":"https://github.com/gabrielpalassi/sisprog","last_synced_at":"2026-02-24T02:06:12.994Z","repository":{"id":249284809,"uuid":"831096079","full_name":"gabrielpalassi/SisProg","owner":"gabrielpalassi","description":"Repositório de exercícios e projetos desenvolvidos na disciplina Sistemas de Programação da Poli-USP.","archived":false,"fork":false,"pushed_at":"2024-07-19T16:59:14.000Z","size":166,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-03-15T05:14:35.378Z","etag":null,"topics":["assembly","system-programming","turing-machine","von-neumann-machine"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gabrielpalassi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-07-19T16:43:14.000Z","updated_at":"2024-07-19T16:59:17.000Z","dependencies_parsed_at":"2024-07-19T21:57:55.337Z","dependency_job_id":null,"html_url":"https://github.com/gabrielpalassi/SisProg","commit_stats":null,"previous_names":["gabrielpalassi/sisprog"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpalassi%2FSisProg","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpalassi%2FSisProg/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpalassi%2FSisProg/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gabrielpalassi%2FSisProg/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gabrielpalassi","download_url":"https://codeload.github.com/gabrielpalassi/SisProg/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243685583,"owners_count":20330982,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["assembly","system-programming","turing-machine","von-neumann-machine"],"created_at":"2024-09-24T22:52:47.219Z","updated_at":"2025-10-30T08:02:33.074Z","avatar_url":"https://github.com/gabrielpalassi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🖥️ Sistemas de Programação\n\nBem-vindo ao repositório dos Laboratórios da disciplina PCS3616 - Sistemas de Programação da Poli-USP. Este repositório contém os exercícios e projetos mais interessantes desenvolvidos ao longo do quadrimestre, cobrindo diversas áreas, como máquinas de Turing, linguagem de máquina MVN, e Assembly.\n\n## Introdução Teórica\n\n### Máquinas de Turing\n\nAs [Máquinas de Turing](https://pt.wikipedia.org/wiki/M%C3%A1quina_de_Turing) são modelos teóricos de computação introduzidos por Alan Turing em 1936. Elas são compostas por:\n\n- **Uma fita infinita** que funciona como memória, dividida em células que podem conter símbolos.\n- **Um cabeçote** de leitura/escrita que se move pela fita, lendo e escrevendo símbolos.\n- **Um conjunto de estados** e regras que determinam as ações do cabeçote com base no símbolo lido e no estado atual.'\n\n#### Exemplo Simples:\n\nUma Máquina de Turing que inverte uma sequência binária (troca 0 por 1 e vice-versa):\n\n- Entrada: `0110`\n- Saída: `1001`\n\n##### Implementação Simples (Pseudo-código):\n\n```\nEstado Inicial: S0\n\nRegras:\n1. Se S0 e lê 0, escreve 1, move para a direita, continua em S0\n2. Se S0 e lê 1, escreve 0, move para a direita, continua em S0\n3. Se S0 e lê branco (fim da fita), para\n```\n\n### Máquinas de Von Neumann\n\nAs [Máquinas de Von Neumann](https://pt.wikipedia.org/wiki/Arquitetura_de_von_Neumann), também conhecidas como Arquitetura de Von Neumann, são a base dos computadores modernos, propostas por John von Neumann em 1945. Elas são caracterizadas por:\n\n- **Uma unidade central de processamento (CPU)** que executa instruções.\n- **Memória** que armazena dados e instruções.\n- **Dispositivos de entrada e saída** para comunicação com o mundo externo.\n\n#### Exemplo Simples:\n\nUm programa em linguagem de máquina MVN que soma dois números:\n\n- Entrada: Dois números armazenados nas posições de memória 1 e 2.\n- Saída: A soma dos dois números armazenada na posição de memória 3.\n\n#### Implementação Simples (Pseudo-código MVN)\n\n```\nLOAD M(1)    ; Carrega o valor da posição 1 para o registrador\nADD M(2)     ; Soma o valor da posição 2 ao valor do registrador\nSTORE M(3)   ; Armazena o resultado na posição 3\nHALT         ; Termina a execução\n```\n\n## Conteúdo do Repositório\n\nEste repositório é dividido em diretórios que correspondem a diferentes laboratórios realizados durante o curso:\n\n### Lab 1 - Simulação de Máquinas de Turing\n\n#### Objetivo:\n\nImplementar máquinas de Turing para realizar operações básicas.\n\n- `mt_soma.txt`: Implementa uma Máquina de Turing que calcula a soma `x + y`.\n- `mt_subtracao.txt`: Implementa uma Máquina de Turing que calcula a subtração `x - y`, com `x \u003e y` e tratamento de erros.\n- `mt_soma_binaria.txt`: Implementa uma Máquina de Turing que calcula a soma `x + y` em binário, com tamanho máximo de dígitos limitado a 8.\n\n#### Instruções:\n\n- Instalar as ferramentas necessárias.\n- Testar o código usando o script python.\n\n### Lab 2 - Simulador e Programação MVN\n\n#### Objetivo:\n\nCriar e testar programas na linguagem de máquina MVN para operações aritméticas e de entrada/saída.\n\n- `ex1-soma.mvn`: Soma dois valores e armazena o resultado em uma posição de memória.\n- `ex2-subtracao.mvn`: Subtrai dois valores usando uma sub-rotina.\n- `ex3-io.mvn`: Lê dois números do teclado e imprime a soma.\n\n#### Instruções:\n\n- Baixar e inicializar o simulador MVN.\n- Executar os programas usando o terminal Python ou diretamente.\n\n### Lab 3 - Triângulos e Mnemônicos em MVN\n\n#### Objetivo: Implementar máquinas de Turing para realizar operações básicas.\n\n- `triangulos.mvn`: Determina se três valores formam um triângulo e qual o tipo.\n- `op-mnem.mvn`: Converte entre códigos de operações e seus mnemônicos.\n- `quadrados-perfeitos.mvn`: Calcula e tabela os quadrados perfeitos dos primeiros 64 números naturais.\n\n#### Instruções:\n\n- Instalar as ferramentas necessárias.\n- Testar o código usando o simulador MVN.\n\n### Lab 4 - Pilha e Mnemônicos em Assembly MVN\n\n#### Objetivo:\n\nEscrever e testar código em Assembly (ASM) para MVN, incluindo a implementação de sub-rotinas e uso da pilha.\n\n- `op-mnem.asm`: Implementa as sub-rotinas `OP2MNEM` e `MNEM2OP` em Assembly.\n- `stack.asm`: Implementa rotinas para empilhar e desempilhar valores usando a pilha da MVN.\n\n#### Instruções:\n\n- Instalar as ferramentas de montagem, ligação e relocação.\n- Compilar e testar o código ASM gerado.\n\n### Lab 5 - Biblioteca de Strings em Assembly MVN\n\n#### Objetivo: Implementar máquinas de Turing para realizar operações básicas.\n\n- `string.asm`: Implementa funções `STRLEN` e `STRCMP` para manipulação de strings.\n\n#### Instruções:\n\n- Montar, ligar e relocar o código ASM.\n- Testar as funções de manipulação de strings.\n\n## Instalação e Uso\n\nPara compilar e testar os programas, siga as instruções específicas em cada laboratório para instalar ferramentas e executar o código (`README.md` de cada diretório). Referências para ferramentas e exemplos de execução estão disponíveis nos arquivos de cada laboratório.\n\n## Links Úteis\n\n- [Repositório do `mvn-cli`](https://github.com/PCS3616/mvn-rs)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielpalassi%2Fsisprog","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgabrielpalassi%2Fsisprog","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgabrielpalassi%2Fsisprog/lists"}