LINUX.ORG.RU

История изменений

Исправление anonymous_incognito, (текущая версия) :

На ассеммблере вообще 680 байт для i386 бинарника и 952 байта для x86_64

(Из какой-то книжки или туториала, не помню)

;Листинг 01 - минимальная программа для Linux на NASM
;Приемы оптимизации не применяются для упрощения кода

;On the amd64 64 bit:
;1) nasm -felf64 prog01.asm -o prog0164.o
;   ld prog0164.o -o prog0164
;2) ld -m elf_i386 -s -o prog01.o file  (or ld -m elf_i386 -o prog01.o prog01)

global _start

_start:

;syscall's numbers are here:
;/usr/include/x86_64-linux-gnu/asm/unistd_64.h
;
; eax -4 - man 2 write
; ebx -1 - stdout
; ecx - buf*
; edx - buf length
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, msglen
int 0x80

mov eax, 1
mov ebx, 0
int 0x80

section .data

msg: db "Linux rulez 4ever",0x0A,0
msglen equ $-msg

Исходная версия anonymous_incognito, :

На ассеммблере вообще 680 байт для i386 бинарника и 952 байта для x86_64

(Из какой-то книжки или туториала, не помню)

;Листинг 01 - минимальная программа для Linux на NASM
;Приемы оптимизации не применяются для упрощения кода

;On the amd64 64 bit:
;1) nasm -felf64 prog01.asm -o prog0164.o
;   ld prog0164.o -o prog0164
;2) ld -m elf_i386 -s -o prog01.o file  (or ld -m elf_i386 -o prog01.o prog01)

global _start

_start:

;syscall's numbers are here:
;/usr/include/x86_64-linux-gnu/asm/unistd_64.h
;
; eax -4 - man 2 write
; ebx -1 - stdout
; ecx - buf*
; edx - buf length
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, msglen
int 0x80

mov eax, 1
mov ebx, 0
int 0x80

section .data

msg: db "Linux rulez 4ever",0x0A,0
msglen equ $-msg