LbI(9); // fib() SubAI(SP,24); StoAMd(RP,SP,20); LodRMd(R0,SP,24); CgtRI(R0,1); StoRMd(R0,SP,8); // 消される. LodRMd(R0,SP,8); // 消される. FreI(8); CmpJeqRII(R0,0,12); LodRMd(R0,SP,24); AddRI(R0,-2); StoRMd(R0,SP,8); // 消される. LodRMd(R0,SP,8); // 消される. FreI(8); StoRMd(R0,SP,0); CalII(9,10); FraI(8); StoRMd(R0,SP,8); LodRMd(R0,SP,24); AddRI(R0,-1); StoRMd(R0,SP,12); // 消される. LodRMd(R0,SP,12); // 消される. FreI(12); StoRMd(R0,SP,0); CalII(9,11); FraI(8); StoRMd(R0,SP,12); // 消される. LodRMd(R0,SP,12); // 消される. LodRMd(R1,SP,8); AddRR(R0,R1); FreR(R1); StoRMd(R0,SP,16); // 消される. FreI(8); FreI(12); LodRMd(R0,SP,16); // 消される. StoRMd(R0,SP,24); FreI(16); LbI(12); LodRMd(R0,SP,24); JmpI(13); LbI(13); // fib().ret: LodAMd(RP,SP,20); AddAI(SP,24); Ret();
| mod=16 | 273.185[sec] | エミュレータ実行:最適化なし・ノーマルモード |
| mod=17 | 221.202[sec] | エミュレータ実行:最適化なし・高速モード |
| mod=18 | 14.931[sec] | x86JITコンパイラ実行:最適化なし・ノーマルモード |
| mod=19 | 13.653[sec] | x86JITコンパイラ実行:最適化なし・e8/c3利用モード |
| mod=0 | 241.998[sec] | エミュレータ実行:最適化あり・ノーマルモード |
| mod=1 | 165.459[sec] | エミュレータ実行:最適化あり・高速モード |
| mod=2 | 9.654[sec] | x86JITコンパイラ実行:最適化あり・ノーマルモード |
| mod=3 | 8.321[sec] | x86JITコンパイラ実行:最適化あり・e8/c3利用モード |
LodRMd(R0,SP,24); CgtRI(R0,1); CmpJeqRII(R0,0,12);
| mod=16 | 256.992[sec] | エミュレータ実行:最適化なし・ノーマルモード |
| mod=17 | 216.348[sec] | エミュレータ実行:最適化なし・高速モード |
| mod=18 | 14.958[sec] | x86JITコンパイラ実行:最適化なし・ノーマルモード |
| mod=19 | 13.648[sec] | x86JITコンパイラ実行:最適化なし・e8/c3利用モード |
| mod=0 | 231.065[sec] | エミュレータ実行:最適化あり・ノーマルモード |
| mod=1 | 157.459[sec] | エミュレータ実行:最適化あり・高速モード |
| mod=2 | 8.345[sec] | x86JITコンパイラ実行:最適化あり・ノーマルモード |
| mod=3 | 8.085[sec] | x86JITコンパイラ実行:最適化あり・e8/c3利用モード |
int fib(int i)
{
if (i > 1) {
i = fib(i - 2) + fib(i - 1);
}
return i;
}L_0: fib:
add fp,-10 add fp,-2
st fp+0
ld fp+10 push 1
push 1 ld fp+0
le lt
not
jz L_3 jz L_1
ld fp+10 ld fp+0
push 2 push 2
sub sub
st fp+0
call L_0 call fib
st fp+2
ld fp+10 ld fp+0
push 1 push 1
sub sub
st fp+0
call L_0 call fib
ld fp+2
add add
st fp+10 st fp+0
L_3: L_1:
ld fp+10 ld fp+0
add fp,10 add fp,2
ret retL_1: add fp,-4 ld fp+4 push 1 le not jz L_4 ld fp+4 push -2 add st fp+0 call L_1 st fp+2 ld fp+4 push -1 add st fp+0 call L_1 ld fp+2 add st fp+4 L_4: ld fp+4 add fp,4 ret
| fib46 | mandel | |
| (1) | 4.608[sec](1.00倍) | 1.874[sec](1.00倍) |
| (2) | 7.279[sec](1.57倍) | 3.373[sec](1.80倍) |
| (3) | 8.179[sec](1.77倍) | 2.919[sec](1.56倍) |