Игорь Пашев -

Nov. 17th, 2010

09:40 pm

Previous Entry Add to Memories Tell A Friend Next Entry

Чтоб не забыть: минимальная программа на ассемблере,
выводящая "Hello!" (без glibc)

.data

msg:
    .string "Hello!\n"
    .set length, . - msg - 1

.text
.globl _start

_start:
    movl    $4, %eax
    movl    $1, %ebx
    movl    $msg, %ecx
    movl    $length, %edx
    int     $0x80

    movl    $1, %eax
    xorl    %ebx, %ebx
    int     $0x80


Компилировать так:
gcc -nostdlib hello.s -o hello
Размер — 623 байта.

Подробности тут http://ru.wikibooks.org/wiki/Ассемблер_в_Linux_для_программистов_C

Tags: , ,
(5 комментариев | Оставить комментарий)

Comments:

[User Picture]
From:[info]gregory_777
Date:November 18th, 2010 - 03:13 am
(Link)
Ну что это за ассемблер... dot-макросы - это не кошерно.
Давайте писать всё по-честнаку.
(Reply to this) (Thread)
[User Picture]
From:[info]stager
Date:November 19th, 2010 - 01:12 pm
(Link)
вот тут пишут:
http://www.muppetlabs.com/~breadbox/software/tiny/teensy.html

там дошли до того, чтоб код запихивать в заголовок elf'а

  $ nasm -f bin -o a.out tiny.asm
  $ chmod +x a.out
  $ ./a.out ; echo $?
  42
  $ wc -c a.out
       45 a.out
(Reply to this) (Parent) (Thread)
[User Picture]
From:[info]gregory_777
Date:November 19th, 2010 - 01:25 pm
(Link)
Фига себе читеры!
(Reply to this) (Parent) (Thread)
[User Picture]
From:[info]herm1t
Date:November 19th, 2010 - 06:39 pm
(Link)
в хедер можно и больше, чем hello вставить
http://vx.netlux.org/herm1t/beads/beads_comments.html
(Reply to this) (Parent)
[User Picture]
From:[info]herm1t
Date:November 19th, 2010 - 06:38 pm
(Link)
если оставить в покое хедера, то лучше еще избавиться от movl (заменить на push / pop), убрать exit() - само вывалится, строку в секцию .text, все заголовки кроме Ehdr и _одного_ Phdr - убрать. должно получится около ста байт.
(Reply to this)