.function Main 0 # 2^0 ldconst 2 ldconst 0 call Pow out pop # 5^2 ldconst 5 ldconst 2 call Pow out pop # 3^1 ldconst 3 ldconst 1 call Pow out pop # 5^3 ldconst 5 ldconst 3 call Pow out pop # 3^4 ldconst 3 ldconst 4 call Pow out pop ldconst 0 ret # Pow($0, $1) .function Pow 2 # $1++ ldloc 1 ldconst 1 add stloc 1 # $2 = 1 ldconst 1 stloc 2 # $3 = 1 ldconst 1 stloc 3 goto LOOPCOND LOOPSTART: pop # result of $3 < $1 # $2 *= $0 ldloc 2 ldloc 0 mul stloc 2 # $3++ ldloc 3 ldconst 1 add stloc 3 # $3 < $1 LOOPCOND: ldloc 3 ldloc 1 lt brt LOOPSTART # return $2 ldloc 2 ret