C言語のプログラムをアセンブリ言語で表示する
auです。
今回はC言語をアセンブリ言語にしてみてみました。
コンパイルする際に"gcc -S ファイル名.c"をする。これでファイル名.sというファイルができ、その中にアセンブリ語で書かれたファイルが完成します。
その際に最適化を適応することでコードを短くすることができたりします。
今回使ったプログラム
#include <stdio.h> int add(int a, int b) { return a + b; } int main(void) { int a = 3; int b = 2; add(a, b); return 0; } // アセンブリ語 .file "add.c" .text .globl add .type add, @function add: .LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -4(%rbp) movl %esi, -8(%rbp) movl -4(%rbp), %edx movl -8(%rbp), %eax addl %edx, %eax popq %rbp .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE0: .size add, .-add .globl main .type main, @function main: .LFB1: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 subq $16, %rsp movl $3, -8(%rbp) movl $2, -4(%rbp) movl -4(%rbp), %edx movl -8(%rbp), %eax movl %edx, %esi movl %eax, %edi call add movl $0, %eax leave .cfi_def_cfa 7, 8 ret .cfi_endproc .LFE1: .size main, .-main .ident "GCC: (Ubuntu 5.4.0-6ubuntu1~16.04.5) 5.4.0 20160609" .section .note.GNU-stack,"",@progbits