#include <stdio.h>
int main() {
int i;
for(i=0;i<10000;i++){
printf("%d",i);
}
}
gcc を使用して、このコードでループの展開を行いたいのですが、フラグも使用します。
gcc -O2 -funroll-all-loops --save-temps unroll.c
私が取得しているアセンブルされたコードには、10000回の反復のループが含まれています
_main:
Leh_func_begin1:
pushq %rbp
Ltmp0:
movq %rsp, %rbp
Ltmp1:
pushq %r14
pushq %rbx
Ltmp2:
xorl %ebx, %ebx
leaq L_.str(%rip), %r14
.align 4, 0x90
LBB1_1:
xorb %al, %al
movq %r14, %rdi
movl %ebx, %esi
callq _printf
incl %ebx
cmpl $10000, %ebx
jne LBB1_1
popq %rbx
popq %r14
popq %rbp
ret
Leh_func_end1:
gcc でループ展開を正しく実装する方法を教えてください。