○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