3 pontos por GN⁺ 2024-12-28 | 1 comentários | Compartilhar no WhatsApp

O que é uma máquina virtual?

  • Uma máquina virtual (VM) é um programa que funciona como um computador. Ela simula a CPU e alguns componentes de hardware para realizar operações aritméticas, ler e escrever na memória e interagir com dispositivos de E/S.
  • VMs são criadas para reproduzir o comportamento de um computador específico ou para facilitar o desenvolvimento de software.
  • A Java Virtual Machine (JVM) é um exemplo bem-sucedido, permitindo executar programas em Java, Kotlin e Clojure em diversos dispositivos.

Arquitetura LC-3

  • LC-3 é uma arquitetura de computador educacional que demonstra os principais conceitos usados em CPUs modernas.
  • O LC-3 possui 65.536 posições de memória, e cada posição armazena um valor de 16 bits.
  • Há 10 registradores: 8 registradores de uso geral, 1 contador de programa (PC) e 1 registrador de flags de condição (COND).

Conjunto de instruções

  • Instruções são comandos que dizem à CPU quais operações básicas executar.
  • O LC-3 tem 16 opcodes, e cada instrução tem 16 bits de comprimento.
  • As instruções são compostas por um opcode e pelos parâmetros necessários para a operação.

Flags de condição

  • O registrador R_COND armazena flags de condição que indicam o sinal do cálculo mais recente.
  • O LC-3 usa 3 flags de condição para indicar o sinal do resultado de um cálculo.

Execução do programa

  • Um programa carrega instruções da memória, incrementa o registrador PC, verifica o opcode e executa a instrução.
  • As instruções podem controlar o fluxo de execução alterando o PC.

Implementação de instruções

  • A instrução ADD soma dois números e armazena o resultado em um registrador.
  • A instrução LDI carrega um valor da memória e o armazena em um registrador.
  • Cada instrução é implementada de acordo com a especificação e deve atualizar as flags.

Rotinas de trap

  • O LC-3 fornece rotinas de trap para executar tarefas comuns, como entrada pelo teclado e saída de strings.
  • Cada rotina de trap é identificada por um código de trap e executada pela instrução TRAP.
  • As rotinas de trap são escritas em C e melhoram o desempenho da VM ao aproveitar as rotinas de E/S do sistema operacional.

1 comentários

 
GN⁺ 2024-12-28
Comentários do Hacker News
  • Um usuário contou que, em uma disciplina introdutória de ciência da computação em um community college, projetou um conjunto simples de instruções de CPU, escreveu uma VM e um assembler, e executou programas em assembly. Esse processo o ajudou a entender muita coisa sobre computadores.

    • Ele sentiu que é possível aprender todas as etapas da computação dessa forma, desde o projeto de uma CPU real para FPGA até a criação de um sistema operacional simples e de programas.
    • Se você não precisa do desempenho e da segurança da computação moderna, esse processo é surpreendentemente simples.
  • Houve quem dissesse que, depois de assistir à série de CPU em breadboard do Ben Eater, passou a querer projetar e emular sua própria CPU.

    • A pessoa expressou o desejo de encontrar tempo para fazer esse projeto.
  • Lista de livros recomendados:

    • "Virtual Machines: Versatile Platforms for Systems and Processes" by Smith and Nair - parece ser uma visão geral abrangente do tema
    • "Virtual Machines" by Iain Craig - parece ser um guia prático sobre linguagens e VMs
    • "Virtual Machine Design and Implementation in C/C++" by Bill Blunden - parece ser um livro focado em implementação prática
    • Foi mencionado que seria útil se alguém que já leu esses livros acrescentasse uma opinião.
  • Houve a opinião de que arquiteturas educacionais como Brookshear Machine e Little Computer são diferentes da realidade e podem passar uma compreensão distorcida aos estudantes.

    • Foi sugerido que, para quem quer aprender como os computadores funcionam, fazer um curso de sistemas operacionais pode ser melhor.
    • Para quem quer um tutorial curto, foi recomendado "Writing my own bootloader".
    • A opinião não era de que o tutorial "Write your own VM" seja ruim, mas sim de que outros temas podem ser mais proveitosos.
  • Houve a opinião de que, hoje em dia, o termo "Virtual Machine" normalmente se refere a um ambiente que usa recursos de virtualização de hardware.

    • Explicando a diferença entre emulador e VM, foi mencionado que no passado havia ambiguidade no termo, mas que hoje isso ficou mais claro.