Série Programming One Kindle

Assembly One

Do zero ao RISC-V

Assembly do zero num processador de verdade e de projeto aberto: o RISC-V, rodando Linux. Memória, registradores, desvio, laço, endereço, sub-rotina, pilha e o caminho de uma instrução por dentro do processador — construindo o painel de leitos de um pronto-socorro, com uma bancada inteira num contêiner Docker.

R$ 16,00 R$ 80,00 Promoção

Atenção: o idioma desta edição é português.

23capítulos
9partes
1projeto do início ao fim
Capa de Assembly One: Do zero ao RISC-V, de Thiago Nogueira Edição Brasil
AssemblyRISC-VLinuxGDBDockerMemóriaRegistradoresPilha
código do livro

Menos teoria vazia.
Mais código que funciona.

Nada de exemplo solto com foo e bar. Todo trecho pertence ao mesmo projeto, que cresce capítulo a capítulo — e os erros aparecem como aparecem na sua tela, para serem lidos linha por linha.

livres.s
lh   t1, 0(t0)          # 40lh   t2, 2(t0)sub  t1, t1, t2         # 40 - 31lh   t2, 4(t0)sub  t1, t1, t2         # - 3lh   t2, 6(t0)sub  t1, t1, t2         # - 2, t1 = 4
terminal
roda leitos.s | display00040roda livres.s | display00004
o projeto

Um sistema só, do primeiro arquivo ao deploy

README.md

O Pronto-Socorro do Santa Byte tem um painel de duzentos e quarenta mil reais que não sabe responder se há leito livre. Ao longo do livro, esse painel vira um programa RISC-V: memória, registradores, laços, fila, triagem, sub-rotinas e o turno da noite.

Do zero ao RISC-V, no painel de leitos de um pronto-socorro.

  • Um projeto só: o painel de leitos do Pronto-Socorro do Santa Byte
  • RISC-V de verdade, em Linux, numa bancada Docker: nada para comprar
  • O processador por dentro: pc, registradores, ULA e memória
  • Bugs de verdade: o 65535 no painel e o contador que virou negativo
leitura de amostra

Leia uma prévia gratuita de Assembly One

Esta amostra contém os primeiros capítulos. O PDF completo continua protegido para compradores.

Abrir prévia em nova aba →
sumário

23 capítulos em 9 partes

Abra uma parte para ver os capítulos — e a frase que abre cada um.

parte 01 O projeto impossívelUm painel apagado na parede do pronto-socorro, uma placa que ninguém mais sabe programar, e a máquina que está dentro dela. 3 cap.
  1. 01
    O hospital tem um problemaUma pergunta de uma linha — tem leito livre? — e uma placa de duzentos e quarenta mil reais que não sabe responder.
  2. 02
    Junho de 1945Um relatório de cento e uma páginas, seis programadoras com cabos na mão, e um processador de 2010 que qualquer pessoa pode fabricar.
  3. 03
    Conhecendo o RISC-VTrinta e dois registradores, uma memória de bytes, e um display que não conhece número negativo.
parte 02 As primeiras linhasMostrar um número, guardar um número, fazer uma conta. A conta acontece nos registradores, e a memória não tem nome de coluna. 3 cap.
  1. 04
    Hello, HospitalPara o terminal, OI. Para o display da parede, dezoito mil setecentos e sessenta e sete.
  2. 05
    Memória não é banco de dadosUma tabela com três colunas no quadro do Bruno. Na memória da placa, seis bytes sem nome nenhum.
  3. 06
    Trinta e dois registradoresLivre é o que não está ocupado, nem bloqueado, nem reservado. E há trinta e dois lugares para fazer essa conta — alguns já com dono.
parte 03 Decidir e repetirNão existe if. Não existe for. Existe pular uma instrução, e pular para outro endereço. 3 cap.
  1. 07
    Se houver leito, interneNão existe if. Existe uma instrução que compara dois registradores e, se der certo, manda a execução para outro lugar.
  2. 08
    O computador não sabe o que você quis dizerSetenta e um leitos livres num pronto-socorro de quarenta. O programa rodou sem nenhum erro.
  3. 09
    O dia em que o hospital descobriu o loopSete blocos copiados viraram dez linhas. O display da bancada passou a tarde mostrando números sem parar.
parte 04 Dados que andam pela memóriaA fila de pacientes vira uma sequência de endereços, e a prioridade vira uma subtração. 2 cap.
  1. 10
    Fila de pacientesQuatro fichas em oito bytes seguidos, e uma quinta que foi parar em cima do ponteiro.
  2. 11
    Prioridade"A regra é simples", disse a Dra. Marta, e explicou durante seis minutos.
parte 05 O painel quebraSessenta e cinco mil leitos disponíveis num pronto-socorro de quarenta, e o que os dezesseis bits estavam tentando dizer. 2 cap.
  1. 12
    Três da manhãSessenta e cinco mil quinhentos e trinta e cinco leitos disponíveis, cinco horas antes da demonstração para a comissão.
  2. 13
    Dezesseis bitsTrezentos e um mil atendimentos desde 2019. O registrador aguenta trilhões; a meia-palavra, sessenta e cinco mil — e às vezes nem isso.
parte 06 Gente do lado de foraO teclado da parede, o número que a enfermeira digita, e a triagem que junta tudo. 2 cap.
  1. 14
    O paciente chegouOito semanas de projeto, e só na nona alguém perguntou quem ia mudar o número de ocupados.
  2. 15
    TriagemTrês números por paciente, uma regra para quem tem mais de oitenta anos, e um ponteiro que ninguém mandou voltar.
parte 07 O sistema inteiroMenu, sub-rotinas e o programa que roda o turno da noite. 3 cap.
  1. 16
    Vamos fazer o sistemaDoze teclas, cinco comandos, e uma tabela de saltos que cabe em quarenta bytes.
  2. 17
    Dividindo o problemaTrês cópias do mesmo trecho, ou uma cópia que sabe voltar. David Wheeler resolveu isso em 1949.
  3. 18
    O turno da noiteNovecentos e setenta e cinco bytes de programa, uma fila fora do arquivo, e o gerador do hospital testado às duas da manhã de domingo.
parte 08 A máquina por dentroO que acontece entre apertar o botão e o número aparecer: o caminho de uma instrução, registrador por registrador. 2 cap.
  1. 19
    O que acontece num loadUma linha de Assembly, cinco caixas atravessadas, e um engenheiro clínico que quer ver as cinco.
  2. 20
    Uma instrução, uma viagemA tecla 4 sai do teclado da parede, passa pelo Linux, e chega à triagem por um endereço que estava guardado na memória.
parte 09 ProduçãoTestar o que ninguém combinou, e deixar o código legível para quem chegar depois. 3 cap.
  1. 21
    Só falta testarNa véspera da visita, a Cida testou o painel do jeito que ela trabalha. Achou cinco defeitos em vinte minutos.
  2. 22
    O código que ninguém quer mexerDezesseis linhas de 2024, sem um único nome. E duzentas e oitenta e cinco linhas de 2026 que uma pessoa nova mudou em uma tarde.
  3. 23
    Assembly não era sobre AssemblyUm for em Python, num projeto novo, e o Bruno enxergando os desvios.
avaliações verificadas

O que leitores dizem sobre Assembly One

Carregando avaliações deste livro…

Ver todas as avaliações deste livro →
git commit -m "primeiro capítulo"

Assembly One

Do zero ao RISC-V, no painel de leitos de um pronto-socorro. O projeto começa a rodar no primeiro capítulo — e não para mais.

Atenção: o idioma desta edição é português.