hello-world-machine

A vida de Olá, Mundo!

← → no teclado; um degrau por tela

lê-sesinais
fraseO
tecla79
número79
bits01001111
o áC3 A1
relésoito chaves
conta+1 = P
endereço0109
ordemCD 05 00
palavraCALL 5
luzpontos
laçoconserva

antes de tudo · como ler os símbolos desta página

Sete sinais, e como cada um se lê

Cada expressão desta página vem com a leitura em voz alta logo abaixo. Esta folha diz o que cada tipo de sinal é.

número(o)

nome em letras retas, com parênteses: uma regra com nome, aplicada ao que está entre parênteses. lê-se: número de o.

v, t

letra inclinada minúscula: uma quantidade que varia. lê-se: vê, tê.

st

índice embaixo: em qual instante, ou em qual posição. lê-se: ésse no instante tê.

28

número pequeno em cima: quantas vezes multiplicar o número por ele mesmo. lê-se: dois elevado a oito.

(79 + 1) mod 256

mod: o resto da divisão por. lê-se: setenta e nove mais um, módulo duzentos e cinquenta e seis.

sinais → significados

seta entre dois conjuntos: uma regra que leva cada coisa da esquerda numa coisa da direita. lê-se: leva sinais em significados.

4F

número em hexadecimal: um número escrito com os algarismos de 0 a 9 e as letras de A a F, que valem de 10 a 15. lê-se: quatro-efe, que vale setenta e nove.

Nenhum sinal aparece antes de estar nesta folha. Em cada degrau, as palavras novas vêm explicadas antes de aparecerem. Onde o símbolo é mais curto que a frase, a frase vence.

0 · antes de qualquer máquina

A frase já é um código

Dizer Olá, Mundo! em voz alta é um código. Escrever é outro. Piscar uma lanterna é um terceiro.

antes, as palavras deste degrau

sinal

  • O que é: qualquer coisa que dá para perceber: um som, uma marca no papel, uma luz acesa.
  • Por que existe: é o que viaja de quem fala até quem ouve; a mensagem em si não viaja sozinha.

código

  • O que é: um combinado sobre o que cada sinal quer dizer.
  • Por que existe: para a mensagem atravessar um meio que não é a voz: o papel, a luz, o fio.
CÓDIGO 1 · VOZCÓDIGO 2 · PAPELCÓDIGO 3 · LANTERNA Olá, Mundo! Olá, Mundo! som no artraço na folhasó dois sinais: curto e longo
Petzold, cap. 1

Código aqui não é segredo: é um combinado sobre o que cada sinal quer dizer. Muda o meio, fica a mensagem. A lanterna já obriga a escolher: dois tipos de piscada, e nada mais.

ver na placa → ola-mundo, ciclo 1: o primeiro passo: a máquina acorda e vai buscar o que tem de fazer

a matemática daqui · correspondência um a um

código: sinais → significados

lê-se: código leva cada sinal num significado só, e dá para voltar.

de onde isto vem
Charles Petzold · cap. 1 — Best Friends
In this book, the word code usually means a system for transferring information among people, between people and computers, or within computers themselves.Neste livro, a palavra código geralmente significa um sistema para transferir informação entre pessoas, entre pessoas e computadores, ou dentro dos próprios computadores.cap. 1 — Best Friends

½ · tecla → número

A tecla vira número

Apertar a tecla O fecha uma chave. A máquina olha uma gaveta especial, a de número 8200, e encontra 79. A tecla virou número.

antes, as palavras deste degrau

chave

  • O que é: uma peça que abre ou fecha um caminho. O interruptor da luz é uma chave; cada tecla também.
  • Por que existe: para ligar e desligar alguma coisa com um toque.

gaveta

  • O que é: um lugar dentro da máquina onde cabe um número, com um número na porta para ser achado de novo.
  • Por que existe: a máquina não enxerga a tecla; ela só sabe olhar gavetas. O teclado deixa o seu número numa delas.
TECLA · uma chave que o dedo fecha · a gaveta 8200h guarda o código O a tecla chave fechada = passa 8200h 4F a gaveta do teclado LDA 8200h A 4F dentro da máquina 79 é o O; 0 é “ninguém apertou”. A máquina olha a gaveta o tempo todo: consultar o teclado.
Petzold, cap. 25

A máquina olha a gaveta o tempo todo e quase sempre encontra zero: ninguém apertou. O livro chama isso de consultar o teclado. Quando encontra 79, copia para a tela e zera a gaveta, pronta para a próxima tecla.

ver na placa → eco, ciclo 22: a gaveta 8200 entrega o 79 à máquina; dez passos depois ele está na tela

a matemática daqui · uma regra do tempo nos números: 0 enquanto solta, o código enquanto apertada

tecla(t) = 79 enquanto o O está apertado, e 0 depois

lê-se: tecla de tê é igual a setenta e nove enquanto o O está apertado, e zero depois.

de onde isto vem
Charles Petzold · cap. 25 — Peripherals
The accumulator would then contain a code indicating what key has been pressed.O acumulador passaria então a conter um código indicando qual tecla foi apertada.cap. 25 — Peripherals
It's tempting to assume that this code is the ASCII code for the key. But it's neither practical nor desirable to design hardware that figures out the ASCII code.É tentador supor que esse código é o código ASCII da tecla. Mas não é prático nem desejável projetar hardware que descubra o código ASCII.cap. 25 — Peripherals
One approach is for the program to check the keyboard very frequently. This approach is called polling.Uma abordagem é o programa consultar o teclado com muita frequência. Isso se chama polling.cap. 25 — Peripherals

1 · letra → número

Cada letra recebe um número

O O vale 79. O l, 108. A vírgula vale 44 e o espaço, 32. A frase vira uma fila de onze números.

antes, as palavras deste degrau

tabela

  • O que é: uma lista em que cada letra tem o seu número ao lado, como uma lista de chamada.
  • Por que existe: a máquina só guarda números; a tabela é o combinado que diz qual número é qual letra.

a tabela: o mesmo combinado em toda máquina do planeta

letraOlá,␣Mundo!
número7910822544327711711010011133
Petzold, cap. 13

Não há nada de O no 79. É uma posição numa tabela que o mundo inteiro combinou usar. Por isso o mesmo O é 79 em qualquer máquina.

ver na placa → ola-mundo, ciclo 8: o número 79, escrito 4F, que é a letra O, chega à máquina

a matemática daqui · correspondência um a um entre letras e números

número(O) = 79

lê-se: número de O é igual a setenta e nove.

de onde isto vem
Charles Petzold · cap. 13 — From ASCII to Unicode
The biggest advantage of UTF-8 is that it's backward compatible with ASCII. This means that a file consisting solely of 7-bit ASCII codes stored as bytes is automatically a UTF-8 file.A maior vantagem do UTF-8 é ser compatível com o ASCII: um arquivo só de códigos ASCII de 7 bits, guardados como bytes, já é automaticamente um arquivo UTF-8.cap. 13 — From ASCII to Unicode

2 · número → bits

Cada número vira oito casas de sim ou não

79 vira 01001111. Oito casas, cada uma só 0 ou 1. Com oito casas cabem 256 coisas diferentes.

antes, as palavras deste degrau

casa

  • O que é: uma posição na escrita de um número. Em 79, o 7 está numa casa e o 9 na outra.
  • Por que existe: é a casa que diz quanto cada algarismo vale: o 7 de 79 vale setenta.

bit

  • O que é: uma casa que só aceita 0 ou 1.
  • Por que existe: é a menor quantidade de informação que existe, e é o que uma chave sabe guardar: desligada ou ligada.

byte

  • O que é: oito bits lado a lado.
  • Por que existe: é o tamanho de uma letra, e o pedaço que a máquina move de cada vez.
UM BYTE = OITO BITS · cada casa vale o dobro da vizinha 1286432168421 0 1 0 0 1 1 1 1 64 + 8 + 4 + 2 + 1 = 79 = O bit = uma casa · as casas pintadas somam, as vazias não contam
Petzold, caps. 11 e 12

É a mesma ideia de 79 = 70 + 9, só que cada casa vale o dobro da vizinha, não dez vezes. 256 é o número de combinações, não um tamanho.

ver na placa → ola-mundo, ciclo 9: os oito pontos da fileira de dados, acesos e apagados: 0 1 0 0 1 1 1 1

a matemática daqui · notação posicional na base dois

79 = 64 + 8 + 4 + 2 + 1

lê-se: setenta e nove é igual a sessenta e quatro, mais oito, mais quatro, mais dois, mais um.

28 = 256

lê-se: dois elevado a oito é igual a duzentos e cinquenta e seis: o tamanho do conjunto das listas de oito zeros ou uns.

de onde isto vem
Charles Petzold · cap. 11 — Bit by Bit by Bit · cap. 12 — Bytes and Hexadecimal
As an 8-bit quantity, a byte can take on values from 00000000 through 11111111, which can represent decimal numbers from 0 through 255, or one of 28, or 256, different things.Como quantidade de 8 bits, um byte vai de 00000000 a 11111111, o que representa os números de 0 a 255, ou uma entre 2⁸, isto é, 256, coisas diferentes.cap. 11 — Bit by Bit by Bit · cap. 12 — Bytes and Hexadecimal

2½ · o degrau que o personagem trouxe

O á não cabe em um byte

225 é maior que 127, e o combinado original só tinha 128 letras, sem acento. O á custa dois bytes.

começar com 110 e 10 é a marca de "vem em dupla"; o 0 na frente do o diz "vem sozinho"

letrabytesem bits
O101001111
l101101100
á211000011 10100001
Petzold, cap. 13

Onze letras, doze bytes. Byte não é letra: uma letra pode custar um, dois, três ou quatro. Quem conta bytes para contar letras erra, e a web inteira já errou isso.

ver na placa → ola-mundo, ciclo 19: na tela desta máquina o á cabe num byte só, E1; os dois bytes são do arquivo

a matemática daqui · código de comprimento variável, sem palavra que seja começo de outra

bytes(o) = 1, bytes(á) = 2

lê-se: bytes de o é igual a um; bytes de á é igual a dois.

de onde isto vem
Charles Petzold · cap. 13, com o £ (U+00A3) como exemplo; o á (U+00E1) está na mesma faixa
Thus, in UTF-8 the two bytes C2h and A3h represent the British £ sign. It seems a shame to require 2 bytes to encode what is essentially just 1 byte of information, but it's necessary for the rest of UTF-8 to work.Assim, em UTF-8 os dois bytes C2 e A3 representam o sinal de libra. Parece pena gastar 2 bytes para codificar o que é essencialmente 1 byte de informação, mas é necessário para o resto do UTF-8 funcionar.cap. 13, com o £ (U+00A3) como exemplo; o á (U+00E1) está na mesma faixa
aqui deixa de ser escrita e passa a ser eletricidade

3 · bit → corrente

Cada casa vira corrente num relé

O 1 é corrente passando; o 0 é corrente parada. Oito relés enfileirados seguram o O; noventa e seis seguram a frase.

antes, as palavras deste degrau

corrente

  • O que é: eletricidade andando por dentro de um fio, como água andando por um cano.
  • Por que existe: é ela que faz a lâmpada acender e, aqui, a chave virar.

relé

  • O que é: uma chave que uma corrente aciona: a corrente de um fio fecha o caminho de outro.
  • Por que existe: é a primeira peça que deixa uma corrente mandar em outra, sem dedo nenhum.

limiar

  • O que é: a linha que separa pouco de muito. Acima dela a corrente conta como 1; abaixo, como 0.
  • Por que existe: a corrente nunca é exatamente igual; a linha é o que faz dois valores diferentes virarem o mesmo sinal.
RELÉ · chave fechada = corrente = 1 · chave aberta = 0 0 1 0 0 1 1 1 1
Petzold, caps. 7 e 8

O número não está no relé. O relé só sabe passar ou não passar; somos nós que combinamos que passar vale 1. Oito relés, oito casas: o O inteiro cabe numa fileira. Como relés viram portas e contas é a história da outra página, a escada.

ver na placa → ola-mundo, ciclo 9: cada ponto aceso na fileira é um fio com corrente passando

a matemática daqui · limiar: um intervalo inteiro de tensões vira um símbolo só

bit(v) = 1 se v ≥ 2 volts, e 0 se v ≤ 0,8 volt

lê-se: bit de vê é igual a um se vê é maior ou igual a dois volts, e igual a zero se vê é menor ou igual a zero vírgula oito volt.

de onde isto vem
a escada — as seis famílias de circuitos · eletroímã → relé (Petzold cap. 7) · relé → porta lógica (cap. 8), com o instrumento “dois relés viram uma porta”
These two relays wired in series are known as an AND gate because it is performing a Boolean AND operation.Esses dois relés ligados em série são conhecidos como porta AND, porque executam a operação booleana E.eletroímã → relé (Petzold cap. 7) · relé → porta lógica (cap. 8), com o instrumento “dois relés viram uma porta”

4 · corrente → conta e lembrança

Os bits aprendem a somar e a ficar parados

Portas ligadas de um jeito somam dois bytes. Ligadas de outro, seguram um bit depois que a entrada some.

antes, as palavras deste degrau

porta lógica

  • O que é: uma peça feita de chaves que responde sim ou não ao que chega nela. Duas chaves em fila só passam corrente com as duas fechadas: é uma porta.
  • Por que existe: é com perguntas de sim ou não, ligadas umas às outras, que se monta uma conta.

estado

  • O que é: o jeito em que uma peça está agora: o que ela guarda neste instante.
  • Por que existe: uma peça que lembra tem estado; uma que só responde não tem.
SOMADOR · faz conta 01001111 + 00000001 = 01010000 = P A PEÇA QUE LEMBRA entrou 1, a entrada sumiu, a saída continua 1
Petzold, caps. 14, 17, 19 a 21

Somar 1 ao O dá P, a letra seguinte: a tabela foi feita para isso funcionar. Agora o número pode ser operado e pode esperar. Lembrar é o que permite o próximo degrau.

ver na placa → ola-mundo, ciclo 11: uma peça guarda onde a máquina está e outra soma 1: lembrar e contar

a matemática daqui · aritmética módulo 256, e estado que depende do anterior

(79 + 1) mod 256 = 80

lê-se: setenta e nove mais um, módulo duzentos e cinquenta e seis, é igual a oitenta.

st+1 = f(st, xt)

lê-se: o estado no instante tê mais um é f de: o estado no instante tê, e a entrada no instante tê.

de onde isto vem
a escada — as seis famílias de circuitos · porta → somador (cap. 14) · porta → flip-flop (caps. 17 e 19) · flip-flop de borda → contador e registrador (cap. 20) · somador → ULA (cap. 21)
A half adder is an XOR gate and an AND gateUm meio-somador é uma porta XOR e uma porta AND.porta → somador (cap. 14) · porta → flip-flop (caps. 17 e 19) · flip-flop de borda → contador e registrador (cap. 20) · somador → ULA (cap. 21)

5 · byte → endereço

Cada byte ganha um lugar com número

Memória é uma fileira de gavetas, cada uma com um número na porta. O O fica na gaveta 0109; o l, na 010A.

antes, as palavras deste degrau

memória

  • O que é: muitas gavetas em fileira, cada uma com um byte dentro.
  • Por que existe: para a frase inteira ficar guardada enquanto a máquina trabalha nela, uma letra por gaveta.

endereço

  • O que é: o número na porta de uma gaveta.
  • Por que existe: para achar de novo o que foi guardado, sem procurar gaveta por gaveta.
GAVETA · dentro, o conteúdo · na porta, o endereço 4F0109O 6C010Al C3010Bá A1010C· 2C010D, 20010E␣ 4D010FM 750110u 6E0111n 640112d 6F0113o 210114! 4F é o 79 em hexadecimal: oito bits abreviados em dois símbolos · o á ocupa duas gavetas vizinhas
Petzold, cap. 19

Agora há dois números por letra: o que ela vale e onde ela está. A ordem das letras virou ordem de endereços. Ler a frase é percorrer gavetas vizinhas.

ver na placa → ola-mundo, ciclo 9: a máquina aponta a gaveta 8000 e guarda nela o 4F

a matemática daqui · a memória é uma regra que leva cada endereço num byte

mem(0109) = 4F

lê-se: mem de zero, um, zero, nove é igual a quatro-efe, que vale setenta e nove.

de onde isto vem
Charles Petzold · cap. 19 — An Assemblage of Memory
That's called writing to memory, and the value of Data In is said to be stored in memory at the address 010.Isso se chama escrever na memória, e diz-se que o valor da entrada fica guardado na memória no endereço 010.cap. 19 — An Assemblage of Memory
aqui deixa de ser circuito e passa a ser linguagem

6 · número → ordem

Um número é lido como ordem, não como quantidade

Na mesma memória, ao lado das letras, moram outros bytes. CD não é letra: é a ordem “chame”. C9 é “volte”.

antes, as palavras deste degrau

ordem

  • O que é: um número que a máquina lê como “faça isto”: some, copie, guarde, chame, volte. O livro chama de instrução.
  • Por que existe: sem ordens a máquina só guardaria números; é a ordem que a põe a fazer alguma coisa com eles.

programa

  • O que é: uma fila de ordens, uma depois da outra, guardada na memória como qualquer outra coisa.
  • Por que existe: é como uma pessoa diz à máquina o que fazer, de uma vez, para a máquina fazer sozinha.

contador de programa

  • O que é: uma gaveta especial da máquina que guarda o endereço da próxima ordem.
  • Por que existe: para a máquina saber qual byte ler como ordem agora, e qual vem depois.
ORDENS · 9 bytesLETRAS · 7 bytes 11 09 01 0E 09 CD 05 00 C9 48 65 6C 6C 6F 21 24 carregue · mova · chame · volte H e l l o ! $ CONTADOR DE PROGRAMA: percorre só o lado azul; o lado bronze ele aponta, como dado
Petzold, caps. 23 e 27

Nada no byte diz se ele é letra ou ordem. O que decide é para onde o contador de programa aponta, e esse contador também é um número guardado na máquina. A máquina se governa com a mesma matéria que governa.

ver na placa → ola-mundo, ciclo 7: o contador de programa aponta a gaveta 0004 e o byte 36 é lido como ordem: guarde a letra

a matemática daqui · a máquina é uma regra de passo: do estado de agora para o próximo

próximo = passo(contador, A, mem)

lê-se: o próximo estado é passo de: o contador de programa, o número guardado em A, e a memória.

de onde isto vem
Charles Petzold · cap. 27 — Coding · cap. 23 — CPU Control Signals
The first 3 bytes are the LXI instruction, the next 2 are the MVI instruction, the next 3 are the CALL instruction, and the next is the RET instruction. The last 7 bytes are the ASCII characters for the five letters of “Hello,” the exclamation point, and the dollar sign.Os 3 primeiros bytes são a instrução LXI, os 2 seguintes a MVI, os 3 seguintes a CALL, e o próximo a RET. Os últimos 7 bytes são os caracteres ASCII das cinco letras de “Hello”, o ponto de exclamação e o cifrão.cap. 27 — Coding · cap. 23 — CPU Control Signals
A value called the program counter. This is the 16-bit value that accesses instructions. It starts at 0000h and sequentially increases until a HLT instruction.Um valor chamado contador de programa. É o valor de 16 bits que acessa as instruções. Começa em 0000 e cresce em sequência até uma instrução HLT.cap. 27 — Coding · cap. 23 — CPU Control Signals

7 · palavras → ordens

Alguém escreve as ordens com palavras

Ninguém decora que “chame” é CD. Escreve-se CALL 5 num texto, e o montador troca cada palavra pelo byte certo.

antes, as palavras deste degrau

montador

  • O que é: um programa que lê um texto com as ordens escritas em palavras e troca cada palavra pelo byte certo.
  • Por que existe: porque pessoa lembra palavra, e máquina só lê número. Alguém tem de fazer a troca, e um programa faz sem errar.

sistema operacional

  • O que é: um programa que já mora na máquina e faz serviços para os outros programas, como mostrar texto na tela.
  • Por que existe: para cada programa novo não precisar saber como a tela funciona.

montador: uma linha, uma ordem

o que a pessoa escreveo que virao que faz
LXI DE,Text11 09 01aponte para a frase
MVI C,90E 09peça o serviço 9: mostrar texto
CALL 5CD 05 00chame o sistema
RETC9volte
DB 'Hello!$'48 65 6C 6C 6F 21 24a frase, byte a byte
Petzold, cap. 27

É aqui que a delegação começa: a pessoa escreve a intenção, a máquina executa. O sistema operacional já sabe fazer serviços, como mostrar texto, para que cada programa não precise saber.

ver na placa → ola-mundo, ciclo 7: na listagem ao lado, MVI M, 'O' virou 36 4F; a máquina só vê os bytes

a matemática daqui · tradução que preserva significado

roda(montar(texto)) = significado(texto)

lê-se: rodar o que foi montado do texto dá o mesmo que o significado do texto.

de onde isto vem
Charles Petzold · cap. 27 — Coding
An assembler such as ASM.COM reads an assembly-language program (often called a source-code file) and writes out to a file containing machine code—an executable file.Um montador como o ASM.COM lê um programa em linguagem de montagem (o chamado arquivo-fonte) e escreve um arquivo com código de máquina: um executável.cap. 27 — Coding
aqui deixa de ser número e volta a ser luz

8 · execução → tela

A ordem vira pontos de luz

A tela também é memória: cada três bytes são um ponto colorido. Mostrar o o é escrever números nas gavetas certas desse bloco.

antes, as palavras deste degrau

pixel

  • O que é: um ponto da tela, pequeno demais para ver sozinho, com uma cor só.
  • Por que existe: a tela não desenha letras; ela acende pontos, e a letra é o que os pontos formam juntos.
PIXEL · um ponto da tela · três bytes: vermelho, verde, azul este pixel 16 23 3F cada um de 0 a 255 tela de 1920 × 1080 pontos 1920 × 1080 × 3 = 6 220 800 bytes lidos 60 vezes por segundo
Petzold, caps. 12 e 25

Sessenta vezes por segundo a tela lê o bloco e acende. Olá, Mundo! volta a ser coisa que a gente lê, feita de números. Como o 79 vira o desenho do O é a próxima pergunta, ainda sem resposta nesta página.

ver na placa → ola-mundo, ciclo 59: a última letra entra na tela e a frase inteira está lá, feita de números

a matemática daqui · regra que leva cada ponto da grade numa cor

cor(3, 4) = 16 23 3F

lê-se: cor de três e quatro é igual a um-seis, dois-três, três-efe: vermelho, verde e azul.

de onde isto vem
Charles Petzold · cap. 25 — Peripherals · cap. 12 (pixel = três bytes)
The contents of the display are stored in a special block of memory, and the individual pixels of the display are refreshed sequentially, starting left to right with the row at the top, and continuing down the display.O conteúdo da tela fica guardado num bloco especial de memória, e os pixels são atualizados em sequência, da esquerda para a direita a partir da linha de cima, descendo pela tela.cap. 25 — Peripherals · cap. 12 (pixel = três bytes)
For a 1920 × 1080 display, each of the 2 million pixels requires 3 bytes for the red, green, and blue components, for a total of 6 million bytes, or 6 megabytes.Numa tela de 1920 × 1080, cada um dos 2 milhões de pixels precisa de 3 bytes, para o vermelho, o verde e o azul: 6 milhões de bytes, ou 6 megabytes.cap. 25 — Peripherals · cap. 12 (pixel = três bytes)

fecho

Em cada degrau, uma coisa se conserva e uma se esquece

A matemática se refere ao mundo por aquilo que se conserva. Cada camada é uma promessa: “pode esquecer o resto, isto eu garanto”.

0 código

conserva a mensagem; esquece o meio.

½ tecla → número

conserva o código da letra; esquece a chave, o dedo.

1 letra → número

conserva qual letra é; esquece forma e som.

2 número → bits

conserva o número exato; esquece a base dez.

2½ o á

conserva a letra e as 128 antigas; esquece “um byte, uma letra”.

3 bit → corrente

conserva 0 e 1; esquece a física.

4 conta e lembrança

conserva a aritmética; esquece os relés.

5 endereço

conserva a ordem das letras; esquece o tempo.

6 número → ordem

conserva a matéria comum; esquece “o que fazer” e “sobre o quê”.

7 palavras → ordens

conserva o significado; esquece as palavras.

8 ordem → luz

conserva a forma reconhecível; esquece o número.

A escada inteira é a cadeia dessas promessas, e a execução é o que sobra quando todas foram cumpridas.