next up previous contents
Next: Alpha Assembly 언어 프로그래밍하기 Up: GAS를 이용한 Alpha Assembly Previous: GAS를 이용한 Alpha Assembly

컴파일 방법

1.
Assembly 코드 작성

가장 간단히 Assembly 언어를 만드는 방법은 다음과 같이 C언어에서 Assembly 언어를 추출해 내는 방법이다.

다음은 hello.c 이다.

#include <stdio.h>

void main()
{

        printf("Hello World\n");

}

다음은 C 소스에서 Assembler 소스를 얻는 방법이다.

% gcc -S hello.c

다음은 이렇게 해서 얻는 Assembler 소스이다.

        .file   1 "hello.c"
        .version        "01.01"
        .set noat
gcc2_compiled.:
__gnu_compiled_c:
.section        .rodata
        .align 3
$C32:
        .ascii "Hello World\12\0"
.text
        .align 3
        .globl main
        .ent main
main:
        ldgp $29,0($27)
main..ng:
        lda $30,-16($30)
        .frame $15,16,$26,0
        stq $26,0($30)
        stq $15,8($30)
        .mask 0x4008000,-16
        bis $30,$30,$15
        .prologue 1
        lda $16,$C32
        jsr $26,printf
        ldgp $29,0($26)
$33:
        bis $15,$15,$30
        ldq $26,0($30)
        ldq $15,8($30)
        addq $30,16,$30
        ret $31,($26),1
        .end main
        .ident  "GCC: (GNU) 2.7.2.1"

2.
GAS로 컴파일 하기

그러면 hello.s라는 assembly 파일이 만들어 지는데, 이것을 GNU Assembler인 as로 Object 파일을 만든다.

% as -o hello.obj hello.s

3.
실행 파일 만들기

이제 Loader(ld)로 라이브러리를 합쳐 실행 파일을 만들어 주면 된다. 이때 gcc로 컴파일해주면 자동으로 모든것을 알아서 해준다.

% gcc -o hello hello.o

Assembly 코드 작성

가장 간단히 Assembly 언어를 만드는 방법은 다음과 같이 C언어에서 Assembly 언어를 추출해 내는 방법이다.

다음은 hello.c 이다.

#include <stdio.h>

void main()
{

        printf("Hello World\n");

}

다음은 C 소스에서 Assembler 소스를 얻는 방법이다.

% gcc -S hello.c

다음은 이렇게 해서 얻는 Assembler 소스이다.

        .file   1 "hello.c"
        .version        "01.01"
        .set noat
gcc2_compiled.:
__gnu_compiled_c:
.section        .rodata
        .align 3
$C32:
        .ascii "Hello World\12\0"
.text
        .align 3
        .globl main
        .ent main
main:
        ldgp $29,0($27)
main..ng:
        lda $30,-16($30)
        .frame $15,16,$26,0
        stq $26,0($30)
        stq $15,8($30)
        .mask 0x4008000,-16
        bis $30,$30,$15
        .prologue 1
        lda $16,$C32
        jsr $26,printf
        ldgp $29,0($26)
$33:
        bis $15,$15,$30
        ldq $26,0($30)
        ldq $15,8($30)
        addq $30,16,$30
        ret $31,($26),1
        .end main
        .ident  "GCC: (GNU) 2.7.2.1"

GAS로 컴파일 하기

그러면 hello.s라는 assembly 파일이 만들어 지는데, 이것을 GNU Assembler인 as로 Object 파일을 만든다.

% as -o hello.obj hello.s

실행 파일 만들기

이제 Loader(ld)로 라이브러리를 합쳐 실행 파일을 만들어 주면 된다. 이때 gcc로 컴파일해주면 자동으로 모든것을 알아서 해준다.

% gcc -o hello hello.o



Kwon Soon Son
1998-11-25