BITS 32
        org     0x00000000
        db      0x7F            ; e_ident
        db      "ELF"
        db      1,1,1,9
code:
        push    EBX
        int     0x80
        mov     AL, 1           ; exit = 1
        push    EAX
        int     0x80
        dw      2               ; e_type
        dw      3               ; e_machine
        dd      1               ; e_version
        dd      _start          ; e_entry
        dd      phdr - $$       ; e_phoff
phdr:   dd      1               ; e_shoff, p_type
        dd      0               ; e_flags, p_offset
        dd      $$              ; e_ehsize, p_vaddr
                                ; e_phentsize
        dw      1               ; e_phnum, p_paddr
        dw      42
        dd      filesize        ; e_shentsize, p_filesz
                                ; e_shnum
_start:
        push    byte 13
        inc     ESI
        db      4               ; e_shstrndx, p_memsz
        db      4               ; p_flags
        push    byte hello
        push    ESI
        jmp short code
hello:  db      "Hello world!", 10
filesize equ    $ - $$
