Fundamentos de Engenharia Reversa
Apoie este trabalho
  • 🙌Apresentação
  • 🥇Introdução
    • 👀Antes de começar
  • 🔢Números
    • Sistemas de Numeração
    • O Byte
    • Números Negativos
    • Cálculos com Binários
  • 🧵Cadeias de Texto
    • ASCII
    • Unicode
    • C Strings
  • 🗂️Arquivos
    • Formatos
  • 💼O formato PE
    • Cabeçalhos
      • MS-DOS
      • COFF
      • Opcional
      • Diretórios de Dados
      • Cabeçalhos das Seções
    • Seções
    • Import Table
    • Endereçamento
  • 🚗Execução de Programas
    • Executáveis
    • Bibliotecas
    • Processos
  • 🖼️Windows API
    • Caixas de Mensagens
    • Manipulação de Arquivos
    • Acesso ao Registro
  • ⚙️Assembly
    • Registradores
    • Instruções Básicas
    • Funções e Pilha
  • 🐞Depuração
    • O Debugger
    • Disassembly
    • Breakpoints
    • Manipulação do Fluxo
    • Patches
  • Apêndices
    • Tabela ASCII
    • Tabela ISO-8859-1/Latin-1
    • Exemplos de Código em Assembly
    • Funções da API do Windows
    • Ferramentas
  • Referências
Powered by GitBook
On this page

Was this helpful?

Edit on GitHub
Export as PDF
  1. Números

O Byte

Agora que já temos um olhar mais abstraído sobre os números, é necessário entender como o computador trabalha com eles. Acontece que é preciso armazenar estes números em algum lugar antes de usá-los em qualquer operação. Para isso foi criado o byte, a unidade de medida da computação. Consiste em um espaço para armazenar bits (8 na arquitetura Intel, também chamado de octeto). Então, neste livro, sempre que falarmos em em 1 byte, leia-se, "um espaço onde cabem 8 bits". Sendo assim, o primeiro número possível num byte é 0b00000000, ou simplesmente 0 (já que zero à esquerda não vale nada e zero em decimal representa a mesma quantidade que zero em binário). E o maior número possível é 0b11111111 que é igual a 0xff em hexa ou 255 em decimal.

Uma maneira rápida de calcular o maior número positivo que pode ser representado num espaço de x bits é usando a fórmula 2^x - 1. Por exemplo, para os 8 bits que mencionamos, basta elevar 2 à oitava potência (que resulta em 256) e diminuir uma unidade: 2^8 - 1 = 255. E por que diminuir um? Porque que o zero precisa ser representado também. Se podemos representar 256 números diferentes e o zero é um deles, ficamos com a faixa de 0 a 255.

Agora que você já sabe o que é um byte, podemos apresentar seus primos nibble (metade dele), word, double word e quad word. Veja a tabela:

Medida
Tamanho (Intel)
Nomenclatura Intel

nibble

4 bits

byte

8 bits

BYTE

word

16 bits

WORD

double word

32 bits

DWORD

quad word

64 bits

QWORD

Fica claro que o maior valor que cabe, por exemplo, numa variável, depende de seu tamanho (quantidade de espaço para armazenar algum dado). Normalmente um tipo inteiro tem 32 bits, portanto, podemos calcular 2 elevado a 32 menos 1, que dá 4294967295. O inteiro de 32 bits ou 4 bytes é muito comum na arquitetura Intel.

PreviousSistemas de NumeraçãoNextNúmeros Negativos

Last updated 12 days ago

Was this helpful?

🔢