C言語,コンパイル時に、アセンブラ出力をする方法

スポンサーリンク

鍛錬 90

C言語,コンパイル時に、アセンブラ出力をする方法

コンパイル時にアセンブラ出力を行うには、gcc のオプションで -S を使用します。
 
使用方法は、以下に示す通りです。

gcc -S ファイル名
スポンサーリンク

プログラム

以下は、今回コンパイルするプログラム、test.c です。

#include <stdio.h>

int main(void)
{
	int result;
	int num_1;
	int num_2;
	int num_3;
	
	num_1 = 3;
	num_2 = 5;
	num_3 = 7;
	
	result = num_1 + num_2 * num_3;
	
	return 0;
}
スポンサーリンク

実行結果

以下は、プログラム test.c をアセンブリでコンパイル後、出力されたアセンブリのファイルを確認しています。

***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ gcc -S test.c
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ 
***@ubuntu:~/***/test/c$ cat test.s
	.file	"test.c"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$3, -16(%rbp)
	movl	$5, -12(%rbp)
	movl	$7, -8(%rbp)
	movl	-12(%rbp), %eax
	imull	-8(%rbp), %eax
	movl	%eax, %edx
	movl	-16(%rbp), %eax
	addl	%edx, %eax
	movl	%eax, -4(%rbp)
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.9) 5.4.0 20160609"
	.section	.note.GNU-stack,"",@progbits

 
上記に示した通り、コンパイル時にアセンブラ出力を行うことができました。

タイトルとURLをコピーしました