/StudyingAssembly

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

Primary LanguageAssemblyGNU General Public License v3.0GPL-3.0

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

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

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

📃 Saiba mais sobre sysCalls

💻 Utilização

Compilado um novo software

nasm -f elf32 file.asm

Linkando

ld -m elf_i386 -o file file.asm

Executando

./file

📄 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). https://www.gnu.org/licenses/gpl-3.0.en.html

Sobre