The Linux Assembly template (32-bit)

On Linux, although files on disc are divided into sections, executables in memory are divided into code and data segments. The following is our template for the ELF 32-bit executable for Linux:

; File: src/template_lin.asm

; Just as in the Windows template - we tell the assembler which type
; of output we expect.
; In this case it is 32-bit executable ELF
format ELF executable

; Tell the assembler where the entry point is
entry _start

; On *nix based systems, when in memory, the space is arranged into
; segments, rather than in sections, therefore, we define
; two segments:
; Code segment (executable segment)
segment readable executable

; Here is our entry point
_start:


; Set return value to 0
xor ebx, ebx
mov eax, ebx

; Set eax to 1 - 32-bit Linux SYS_exit system call number
inc eax

; Call kernel
int 0x80


; Data segment
segment readable writeable
db 0


; As you see, there is no import/export segment here. The structure
; of an ELF executable/object file will be covered in more detail
; in chapters 8 and 9

As was mentioned in the preceding code, these two templates will be used as a starting point for any code we will write in this book.

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset