Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

C/Assembly/stdout

From ZeroWiki

GCC는 1문자를 printf() 시 assembly어의 putchar을 call한다. GCC는 1문자이상과 carrige-return(\n)을 printf()시 assembly어의 puts를 call한다. GCC는 1문자이상을 puts()시 assembly어의 puts를 call한다. GCC는 2문자이상을 printf시 assembly어의 printf를 call한다.

.LC0: .string "1"
.LC1: .string "2"
.LC2: .string "3"
.LC3: .string "45"

//  printf("1\n");
    subl    $12, %esp
    pushl   $.LC0
    call    puts
    addl    $16, %esp

// puts("2");
    subl    $12, %esp
    pushl   $.LC1
    call    puts
    addl    $16, %esp

// printf("3");
    subl    $12, %esp
    pushl   $51
    call    putchar
    addl    $16, %esp

// printf("45");
    subl    $12, %esp
    pushl   $.LC2
    call    printf
    addl    $16, %esp