Pular para o conteúdo
Vítor Silvério
  • Início
  • Projetos
  • Currículo
  • Curso ARM
  • Artigos
Escritos & estudos

Artigos

Anotações e aprendizados sobre tecnologia — muitos redigidos com apoio de IA enquanto estudo. Novos textos entram aqui — assine o RSS para acompanhar.

  • Montando e ligando um executável ARM

    Entre o .s e o programa que roda há dois passos: montar (as) transforma texto em código-objeto com endereços relativos; ligar (ld) atribui os endereços finais, junta as seções e escolhe o ponto de entrada. Este artigo abre os dois, com um *linker script* de verdade e o objcopy que extrai os bytes crus.

    20 de setembro de 2026· 11 min de leitura
  • Primeiro programa em assembly ARM

    Duas funções escritas do zero em assembly ARM — fibonacci iterativo e o máximo de dois números — montadas, ligadas e rodadas no arm-box, com o resultado provado pelo *exit code*. O max sai em três instruções, sem um único desvio.

    19 de setembro de 2026· 16 min de leitura
  • Como o decoder do arm-jitter funciona

    Decodificar à mão é o começo. O arm-jitter faz o mesmo em Java, mas não para na DecodedInstruction: ele eleva blocos inteiros para uma representação intermediária imutável e roda um otimizador em cima. Este artigo segue os bytes de 0xe0810002 até virarem IrOp — e mostra o otimizador apagando código morto.

    11 de setembro de 2026· 14 min de leitura
  • Decodificando Thumb à mão

    Em Thumb cada instrução tem 16 bits — metade do ARM. Não há campo de condição, os registradores livres são só r0–r7, e o formato muda conforme os bits do topo. Este artigo decodifica sete halfwords reais à mão e mostra o mapa de formatos que o ThumbDecoder do arm-jitter usa.

    10 de setembro de 2026· 11 min de leitura
  • Do C ao binário ARM: gcc + objdump

    Uma função em C de cinco linhas vira 25 instruções ARM com -O0 e 13 com -O2. Este artigo compila a mesma função nos dois níveis, lê a desmontagem lado a lado e mostra o que são .text, .data, .bss e os símbolos num objeto ELF.

    09 de setembro de 2026· 11 min de leitura
  • Fetch–decode–execute e o ArmCore.step()

    Um processador não "roda um programa": ele repete um ciclo de três passos — buscar, decodificar, executar. Este artigo mostra o ciclo, o pipeline que faz o PC parecer adiantado, e como tudo isso vira o método ArmCore.step() do arm-jitter — com um trace real que prova o offset de +8 do R15.

    08 de setembro de 2026· 12 min de leitura
  • Anatomia de uma instrução ARM

    Toda instrução ARM de 32 bits segue o mesmo esqueleto: 4 bits de condição, um punhado de bits de opcode e um Operand2 de 12 bits que esconde o barrel shifter. Este artigo abre o formato campo a campo, com encodings reais do objdump, e mostra como o arm-jitter extrai exatamente esses campos em ArmDecoder.

    07 de setembro de 2026· 12 min de leitura
  • Registradores e CPSR: banking, modos e SPSR

    O ARM de 32 bits tem 16 registradores visíveis — mas quantos existem de verdade depende do modo em que a CPU está. Este artigo destrincha R0–R15, o CPSR bit a bit, o register banking por modo e o SPSR, e mostra como o arm-jitter modela tudo isso em CpsrRegister, CpuMode e ArmCore.

    06 de setembro de 2026· 12 min de leitura
  • Convenções de assembly da trilha

    Antes de decodificar binário, um acordo de notação: qual sintaxe de assembly a trilha usa (UAL), quais diretivas do GNU assembler aparecem nos listings, e como ler a saída do objdump — endereço, bytes de codificação e mnemônico.

    05 de setembro de 2026· 9 min de leitura
  • Por que emular ARM (e por que isso ensina arquitetura)

    Escrever um emulador é o melhor laboratório de arquitetura que existe: você é obrigado a implementar a semântica exata de cada instrução, flag e modo. Esta é a abertura de uma trilha que ensina o ARM a partir de código real — o arm-jitter e os emuladores construídos sobre ele.

    04 de setembro de 2026· 9 min de leitura
  • Semihosting e syscalls: como o arm-box traduz chamadas de sistema EABI para o host

    Semihosting é o mecanismo que permite que código rodando em um alvo ARM (ou emulador como o arm-box) faça chamadas ao sistema operacional do host — leitura de console, escrita de arquivos, saída do programa. O arm-box intercepta e traduz essas chamadas EABI.

    03 de setembro de 2026· 10 min de leitura
  • Manipulação de bits em Thumb: AND, ORR, EOR, BIC, BFI, BFC e shift register

    No ARM Thumb, os bits de um registrador são manipuláveis individualmente com instruções lógicas e de deslocamento. ANDS, ORRS, EORS, BICS, BFI, BFC e LSL/LSR/ASR são o kit de ferramentas do embedded — cada bit tem um propósito no controle de periféricos.

    02 de setembro de 2026· 9 min de leitura
  • Instruções condicionais em Thumb: IT blocks e execução condicional

    No ARM, quase toda instrução é condicional. No Thumb-1, poucas são. O Thumb-2 resolve com IT blocks — veja como funcionam com bytes reais.

    01 de setembro de 2026· 9 min de leitura
  • Thumb e Thumb-2: instruções de 16/32 bits

    Thumb comprime instruções para 16 bits (e Thumb-2 mistura com 32 bits), reduzindo o tamanho do binário. Veja os bytes reais e como o arm-box os executa.

    31 de agosto de 2026· 9 min de leitura
  • Flags e desvios condicionais: N/Z/C/V, bge/blt/bne

    O CPSR guarda as flags N, Z, C, V que os desvios condicionais consultam. Entenda como cada flag é formada e por que o bge do nosso laço funciona.

    30 de agosto de 2026· 9 min de leitura
  • Sub-rotinas em ARM: BL/BX, pilha e convenção de chamada

    Como chamar funções no ARM: BL salva o retorno em LR, BX volta, a pilha (PUSH/POP) preserva registradores, e a AAPCS define quem carrega o quê. Com decodificação bit a bit do objdump.

    29 de agosto de 2026· 9 min de leitura
  • Decodificando instruções ARM à mão com o objdump (bit a bit)

    Pegue o ELF do laço de soma, rode o objdump e decodifique instruções ARM à mão: cond, opcode, registradores e offset — exatamente a leitura que o decodificador do arm-jitter faz.

    28 de agosto de 2026· 9 min de leitura
  • Depurando ARM com GDB no arm-box: código instrução a instrução

    O arm-box agora expõe o core como um stub GDB remoto: breakpoints, watchpoints, step e continue. Veja como usar para depurar e entender código ARM rodando de verdade.

    27 de agosto de 2026· 9 min de leitura
  • Carga e armazenamento no ARM: LDR, STR e seu primeiro laço

    Depois da teoria, mãos à obra: use LDR e STR para ler e escrever memória, monte seu primeiro laço com CMP/BNE e rode um programa que soma um vetor no arm-box.

    26 de agosto de 2026· 9 min de leitura
  • Fundamentos da arquitetura ARM

    Visão geral da arquitetura ARM: banco de registradores, modos de execução, conjunto de instruções e modos de endereçamento — a base para programar e emular ARM de verdade.

    25 de agosto de 2026· 12 min de leitura
  • Setup do ambiente ARM

    Monte a bancada: JDK 25, Maven, toolchain ARM bare-metal e os repositórios arm-jitter/arm-box para compilar e rodar binários ARM reais.

    24 de agosto de 2026· 9 min de leitura
  • Criando um executável ARM e rodando no arm-box

    Mão na massa: escreva um hello world em assembly ARM, monte um ELF real e rode no arm-box (o runner sobre o arm-jitter).

    23 de agosto de 2026· 10 min de leitura
  • Angular Signals na prática

    Uma introdução prática ao sistema de reatividade baseado em signals e como ele muda a forma de escrever componentes.

    02 de fevereiro de 2026· 8 min de leitura
  • Boas-vindas ao meu canto na internet

    Por que criei este site e como pretendo usá-lo para documentar meus estudos e projetos.

    15 de janeiro de 2026· 3 min de leitura

© 2026 Vítor Silvério. Feito com Angular.

LinkedInGitHubRSS

Usamos o Google Analytics para entender como o site é usado. Nenhum dado é coletado antes do seu consentimento.