Skip to main content
added 12 characters in body
Source Link

NASM (32-bit Linux x86 ELF), 45 bytes

NASM (64-bit Linux x86 ELF), 80 bytes

NASM (Linux x86 a.out), 35 bytes

NASM (32-bit Linux ELF), 45 bytes

NASM (64-bit Linux ELF), 80 bytes

NASM (Linux a.out), 35 bytes

NASM (32-bit Linux x86 ELF), 45 bytes

NASM (64-bit Linux x86 ELF), 80 bytes

NASM (Linux x86 a.out), 35 bytes

Source Link

All from the blog post linked in the question comments; this is not my work, all credit goes to Brian Raiter: https://www.muppetlabs.com/~breadbox/software/tiny/return42.html

NASM (32-bit Linux ELF), 45 bytes

BITS 32
  
        org 0x00010000
  
        db  0x7F, "ELF"
        dd  1
        dd  0
        dd  $$
        dw  2
        dw  3
        dd  _start
        dd  _start
        dd  4
_start: mov bl, 42          ; set ebx to exit code 42
        xor eax, eax        ; set eax to 1 (exit syscall)
        inc eax
        int 0x80            ; and exit
        db  0
        dw  0x34
        dw  0x20
        db  1
  
filesize    equ $ - $$

(https://www.muppetlabs.com/~breadbox/software/tiny/tiny-i386.asm.txt)

NASM (64-bit Linux ELF), 80 bytes

BITS 64

        org 0x500000000

        db  0x7F            ; e_ident
_start: db  "ELF"           ; 3 REX prefixes (no effect)
        and eax, 0x00000101
        lea edi, [rax + 42] ; rdi = exit code
        mov al, 60          ; rax = syscall number
        syscall             ; exit(rdi)
        dw  2               ; e_type
        dw  62              ; e_machine
        dd  1               ; e_version
phdr:   dd  1               ; e_entry   ; p_type
        dd  5               ; p_flags
        dq  phdr - $$       ; e_phoff   ; p_offset
        dq  phdr            ; e_shoff   ; p_vaddr
        dd  0               ; e_flags   ; p_paddr
        dw  0x40            ; e_ehsize  
        dw  0x38            ; e_phentsize
        dw  1               ; e_phnum   ; p_filesz
        dw  0x40            ; e_shentsize
        dw  0               ; e_shnum
        dw  0               ; e_shstrndx
        dq  0x00400001      ; p_memsz
        dq  0               ; p_align

(https://www.muppetlabs.com/~breadbox/software/tiny/tiny-x64.asm.txt)

NASM (Linux a.out), 35 bytes

BITS 32

        org     0x1000
                            ; a.out header
        dd      0x006400CC  ;   a_info
        dd  filesize        ;   a_text
        dd      0           ;   a_data
_start:     mov bl, 42      ; set exit code ;   a_bss
        jmp short part2
        dd  0               ;   a_syms
        dd  _start          ;   a_entry
        dd  0               ;   a_trsize
        dd  0               ;   a_drsize

part2:  inc eax             ; set syscall number
        int 0x80            ; exit(ebx)

filesize    equ $ - $$

(https://www.muppetlabs.com/~breadbox/software/tiny/tiny-aout.asm.txt)

Post Made Community Wiki by SuperStormer