Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/walderlansena/studyingassembly

:mortar_board: :computer: Repositório com código de estudo da linguagem de programação Assembly
https://github.com/walderlansena/studyingassembly

0x86 32bits asm assembly baixo-nivel code estudo linguagem-assembly linux nasm nasm-assembly programacao programacion sistema syscalls

Last synced: 8 days ago
JSON representation

:mortar_board: :computer: Repositório com código de estudo da linguagem de programação Assembly

Awesome Lists containing this project

README

        

Estudando Assembly


Repositório com código de estudo da linguagem de programação Assembly

# O que é a linguagem Assembly?

**Assembly** ou **linguagem** de montagem é uma notação legível por humanos para o código de máquina que uma arquitetura
de computador específica usa, utilizada para programar códigos entendidos por dispositivos computacionais, como
microprocessadores e microcontroladores. [Fonte: wikipedia](https://pt.wikipedia.org/wiki/Assembly)


Compilador


Visite nasm.us »

## System Calls

"As system calls (ou chamadas do sistema) são APIs para criar uma interface entre o user space
(espaço onde o utilizador tem permissão para correr os seus programas) e o
kernel space (espaço onde o sistema operativo correr os seus programas que necessitam de um
nível de permissão superior). Nos já usamos algumas system calls tais como o sys_write e o sys_exit,
para escrever no ecrã e terminar o programa, respetivamente."

"Todas as system calls estão listadas em ```/usr/include/asm/unistd.h```, juntamente com os seus números
(o valor a colocarem EAX antes de chamar a interrupção 80h)."

eax | Nome | ebx | ecx | edx | esx | edi
----|---------|---------|-----|-----|-----|----
1 |sys_exit | int | - | - | - | -
2 |sys_fork | struct pt_regs | - | - | -
3 |sys_read | unsigned int |char * |size_t | - | -
4 |sys_write| unsigned int |const char * | size_t | - | -
5 |sys_open |const char * | int | int | - | -
6 |sys_close |unsigned int | - | - | - | -

#### Exemplo de ultilização da SysCall exit

```assembly

section .text
 global _start ; informa o linker (ld) qual é o ponto de entrada

_start: ; ponto de entrada

mov ebx, 0 ; valor de retorno para o SO(Sistema Operacional)
mov eax, 1 ; valor da syscall exit()
int 0x80 ; chamando o kernel
```


:page_with_curl: Saiba mais sobre sysCalls

### :computer: Utilização

**Compilado um novo software**
```
nasm -f elf32 file.asm
```

**Linkando**
```
ld -m elf_i386 -o file file.asm
```

**Executando**
```
./file
```

## :page_facing_up: License
GNU **General Public License** (Licença Pública Geral), GNU GPL ou simplesmente GPL, é a designação da licença
para software livre idealizada por Richard Matthew Stallman em 1989, no âmbito do projeto GNU da Free Software Foundation (FSF).

## Sobre