sábado, 28 de julho de 2012

Linguagem NASM e Lista de syscall linux

Como escrever uma linha de código no NASM

Dando seguimento ao meu pequeno plano de adaptar os exercícios do livro "Linguagem assembly para IBM PC" de Peter Norton (publicado na década de 1980) para serem executados no Linux com o NASM, eu traduzi o capitulo 3 do manual do NASM...
Mas também inclui no texto uma breve descrição de como usar as syscall do linux e uma lista, obtida aqui para ajudar a desenvolver programas em assembly NASM para linux. Bons estudos


Obtenha o arquivo aqui. :]

Continue Lendo >

domingo, 22 de julho de 2012

Man - dica do dia

Uma pequena função não explicada nos manuais

Essa aconteceu comigo agora mesmo. Pesquisando sobre as syscalls do linux, descobri uma entrada no man chamada syscalls (assim mesmo, no plural), que lista as syscalls. Minha busca era pela sys_write, a quarta syscall do linux.

O man exibe um conjunto de paginas 'on-line' dos programas instalados no computador. Sempre que um programa é instalado no linux, uma man page é instalada também. Alguns instalam também entrada para o info, mas isso foge do escopo deste post.

Um detalhe pouco descrito nos tutoriais e manuais do linux que encontramos pela web, é o significado do numero entre os parenteses que toda entrada do man tem, por exemplo write(2). Que nada mais é do que uma indicação da Seção do manual que pertence a pagina em questão.

O man tem no minimo 8 seções, mas cada ditribuição pode personalisar as seções, inclusive adicionando seções:
1 -- User Commands
2 -- System Calls
3 -- C Library Functions
4 -- Devices and Special Files
5 -- File Formats and Conventions
6 -- Games et. Al.
7 -- Miscellanea
8 -- System Administration tools and Deamons

Se entrarmos o comando man write, abriremos a pagina referente ao programa 'write' que permite enviar uma mensagem para outro usuário logado no sistema. Mas se quisermos obter as informações sobre a chamada de sistema write como faremos?

Basta digitar o número da seção antes do nome da pagina, da seguinte forma: man 2 write . Pronto agora abrimos a pagina do write(2), da seção das chamadas do sistema, e não a pagina do write(1), da seção de comandos do usuário. Dica tola, verdade, mas não encontrei nada a respeito disso em nenhum guia da web, só pesquisando no manual do manual :).

Continue Lendo >