#***********************************************************************//
# hello.s  21:00 2006-11-14  Defolos					//
#									//
# GASで作成した「Hello world!」と表示するプログラム			//
# ペイロードとして利用するため、NULLバイトが発生しないようにしている	//
#***********************************************************************//

.globl main
main:
        jmp     ONE
TWO:
        popl    %ecx
        xorl    %eax,   %eax
        xorl    %ebx,   %ebx
        xorl    %edx,   %edx
        mov     $0x4,   %al
        mov     $0x1,   %bl
        mov     $0xd,   %dl
        int     $0x80
        xorl    %eax,   %eax
        movl    %eax,   %ebx
        xorl    %ebx,   %ebx
        inc     %eax
        int     $0x80
ONE:
        call    TWO
        .string "Hello world!\n"

/*----------------------------------------------------------------------
[アセンブル後、機械語に変換]

defolos@glazheim:~$ gcc hello.s
defolos@glazheim:~$ objdump -d a.out|grep \<main\> -A 30

\xeb\x18\x59\x31\xc0\x31\xdb\x31
\xd2\xb0\x04\xb3\x01\xb2\x0d\xcd
\x80\x31\xc0\x89\xc3\x31\xdb\x40
\xcd\x80\xe8\xe3\xff\xff\xff
\x48\x65\x6c\x6c\x6f\x20\x77\x6f\x72\x6c\x64\x21\x0a
------------------------------------------------------------------------*/