Menu
Coddy logo textTech

O que é uma Syscall?

Parte da seção Fundamentos do Journey de Assembly da Coddy — lição 31 de 45.

Você escreveu instruções assembly como mov e lea. Essas instruções são executadas diretamente na CPU. Mas e se você precisar fazer algo que a CPU não consegue fazer sozinha — como imprimir na tela, ler do teclado ou sair de um programa?

Para estas tarefas, você precisa do sistema operacional (Linux, neste curso).

O que é uma syscall?

Uma syscall (chamada de sistema) é uma requisição do seu programa para o sistema operacional. É como você solicita ao SO para fazer algo por você.

Por que você precisa de syscalls:

TarefaA CPU pode fazer isso sozinha?Precisa de syscall?
Somar dois númerosSimNão
Mover dados entre registradoresSimNão
Imprimir texto na telaNãoSim
Ler entrada do tecladoNãoSim
Sair de um programaNãoSim
Abrir um arquivoNãoSim

Como funciona uma syscall:

  1. Você coloca um número de syscall em rax (diz ao SO o que você quer)
  2. Você coloca argumentos em outros registradores (rdi, rsi, rdx, etc.)
  3. Você executa a instrução syscall
  1. A CPU entra no kernel do SO
  2. O SO realiza a requisição
  3. O SO devolve o controle para o seu programa

Analogia:

Pense em uma syscall como ligar para um órgão governamental:

PassoAnalogiaEm assembly
1Decida qual serviço você precisaEscolha o número da syscall (coloque em rax)
2Preencha os formuláriosColoque os argumentos nos registradores
3Envie a solicitaçãoExecute syscall
4O governo processa a solicitaçãoO kernel do SO faz o trabalho
5Receba seu resultado de voltaO programa continua

Syscalls que você aprenderá neste curso:

SyscallNúmeroO que fazCapítulo
exit60Encerra o programaCapítulo 4
write1Imprime texto na telaCapítulo 5

A syscall mais importante por enquanto: <strong>exit</strong>

Sem exit, seu programa continuaria rodando para sempre ou travaria. Todo programa que você escrever deve terminar com uma syscall exit.

mov rax, 60    ; número da syscall para sair
mov rdi, 0     ; código de saída (0 = sucesso)
syscall        ; solicita ao SO para sair

Experimente você mesmo

Esta lição não inclui um desafio de código.

quiz iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos