Syscall Reference
LinuxWindowsAssembly
Sobre
18 resultados
  • Uso geralOs 16 registradores de 64 bits e seus papéisRegistradores
  • Sub-registradoresNomes de 32, 16 e 8 bits e a zero-extensãoRegistradores
  • EspeciaisRIP, RFLAGS, RSP/RBP, FS/GS e os vetoriaisRegistradores
  • RFLAGS e saltosOs bits de status e quais saltos os leemRegistradores
  • Modos de endereçamento[base + índice*escala + desloc] e o leaMemória
  • Pilha e quadrospush/pop, prólogo/epílogo, alinhamento e red zoneMemória
  • Convenção de chamadaSystem V (Linux) × Microsoft x64 (Windows)Convenções
  • Volátil × preservadoQuem o chamador salva e quem a função restauraConvenções
  • Convenção de syscallComo entrar no kernel em cada sistemaConvenções
  • Movimentação de dadosmov, lea, movzx, push, pop, xchg…Instruções
  • Aritmética e lógicaadd, sub, imul, xor, shl, sar…Instruções
  • Controle de fluxocmp, jmp, je/jne, call, ret, loop…Instruções
  • Ponto flutuante e SIMDxmm/ymm, movss, addsd, cvtsi2sd…Instruções
  • Instruções de sistemasyscall, int, sysret, cpuid, nop…Instruções
  • Intel × AT&TAs duas notações e como converter entre elasSintaxe
  • Diretivas do montadorsection, db, dq, equ, global, extern…Sintaxe
  • Exemplo — Linuxwrite + exit por syscall diretaExemplos
  • Exemplo — WindowsMessageBoxA e o stub do ntdllExemplos
Assembly · x86-64

Registradores, convenções e instruções do x86-64

Escolha um tópico na barra à esquerda, ou comece por um dos cartões abaixo. É a camada logo abaixo das tabelas de syscalls do Linux e da Win32 API: como argumentos são passados, valores retornados e como se entra no kernel em cada sistema.

Registradores

Uso geral

Os 16 registradores de 64 bits e seus papéis

Sub-registradores

Nomes de 32, 16 e 8 bits e a zero-extensão

Especiais

RIP, RFLAGS, RSP/RBP, FS/GS e os vetoriais

RFLAGS e saltos

Os bits de status e quais saltos os leem

Memória

Modos de endereçamento

[base + índice*escala + desloc] e o lea

Pilha e quadros

push/pop, prólogo/epílogo, alinhamento e red zone

Convenções

Convenção de chamada

System V (Linux) × Microsoft x64 (Windows)

Volátil × preservado

Quem o chamador salva e quem a função restaura

Convenção de syscall

Como entrar no kernel em cada sistema

Instruções

Movimentação de dados

mov, lea, movzx, push, pop, xchg…

Aritmética e lógica

add, sub, imul, xor, shl, sar…

Controle de fluxo

cmp, jmp, je/jne, call, ret, loop…

Ponto flutuante e SIMD

xmm/ymm, movss, addsd, cvtsi2sd…

Instruções de sistema

syscall, int, sysret, cpuid, nop…

Sintaxe

Intel × AT&T

As duas notações e como converter entre elas

Diretivas do montador

section, db, dq, equ, global, extern…

Exemplos

Exemplo — Linux

write + exit por syscall direta

Exemplo — Windows

MessageBoxA e o stub do ntdll