-2
私はpower
と呼ばれるサブルーチンを呼び出すSPARCアセンブリプログラムで作業していました。このサブルーチンでは、ベース番号をとり、指数に基づいて自己のベース時間を掛けます。基本的には、パワー関数を計算するだけです。私の問題は、次のC言語関数をSPARCアセンブリに変換することに問題があることです。次のC関数をSPARCアセンブラに変換するのに助けが必要
power(int base, int exponent)
{
register int p, e;
p = 1;
for(int e=1; e <= exponent; e++)
{
p *= base;
}
}
これは私が持っているものであるが、私はちょうど私の答えとして49を得る:
.global main
main: save %sp,-96,%sp
mov 7,%i0
mov 5,%i1
mov 1,%l2
loop: mov %i0,%o0
mov %i0,%o1
call .mul
nop
cmp %l2,%i1
ble loop
dec %i1
で
ble
を置き換えを壊しては - あなたは主に正方形や立方体をすれば、それは勝ったもののちなみに、それは」、特に優れた累乗アルゴリズムではありません多くの事柄。より高いパワーの場合は、線形ではなく、対数であるアルゴリズムを使用する必要があります。 –https://en.wikipedia.org/wiki/Exponentiation_by_squaring –