○gccでアセンブラを出力しそれを実行ファイルにする
■元になるソースコード
▽ファイル名 : test.c
#include <stdio.h>
main(){
while(1){
char buff[1024];
scanf("%s",buff);
printf("%s HELLO \n",buff);
}
}
■アセンブラファイルを出力する
gcc -S test.c
▽生成されたファイル名 : test.s
.file "test.c"
.section .rodata
.LC0:
.string "%s"
.LC1:
.string "%s HELLO \n"
.text
.globl main
.type main, @function
main:
pushl %ebp
movl %esp, %ebp
subl $1048, %esp
andl $-16, %esp
movl $0, %eax
addl $15, %eax
addl $15, %eax
shrl $4, %eax
sall $4, %eax
subl %eax, %esp
.L2:
leal -1032(%ebp), %eax
movl %eax, 4(%esp)
movl $.LC0, (%esp)
call scanf
leal -1032(%ebp), %eax
movl %eax, 4(%esp)
movl $.LC1, (%esp)
call printf
jmp .L2
.size main, .-main
.section .note.GNU-stack,"",@progbits
.ident "GCC: (GNU) 3.4.4"
■アセンブラファイルからオブジェクトファイルの作成
as -o test.o test.s
■リンクして実行ファイルの作成
gcc -o test test.o
▲トップページ
>
Linux と C