Howto assembly
==============

https://www.tutorialspoint.com/assembly_programming

Sections
--------

Sections are used to structure the code

.data: declaring initialized data or constants
.bss: declaring variables
.text: contains actual code

Comments
--------

Comments can be single lines or inline

;this is a comment

CPU-Registers
-------------

Registers=CPU-internal memory storage locations

* Genearl registers (Data, pointer, index registers)
* Control registers
* Segment registers
* 32 bit register:

eax: Accumulator
ebx: Base
ecx: Counter
edx: Data

System calls
------------

Used to instruct the kernel to do something

1. Put the system call number in the EAX register.
2. Store the arguments to the system call in the registers EBX, ECX, etc.
3. Call the relevant interrupt (80h).
4. The result is usually returned in the EAX register.

| %eax | Name      | %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   | -            | -      | -    | -    |