2011-10-18 11:17:11 +02:00

41 lines
904 B
C

#include <stdio.h>
int main(){
int i = 2;
int result = 1;
int n = 12;
//int a; //für Zeitmessung einkommentieren
//int c = 100000000; //für Zeitmessung einkommentieren
//for (a = 1; a <= c; a++){ //für Zeitmessung einkommentieren
//result = 1; //für Zeitmessung einkommentieren
asm ( "subl %%ebx, %%ecx;" // %ecx = n - i
"inc %%ecx;" // Anzahl der Schleifendurchläufe + 1
".schleife: cmp $0, %%ecx \n\t" // %ecx = 0 ? -> jump .end
"je .end \n\t"
"mull %%ebx \n\t" // %eax = %eax * %ebx(result *= i)
"inc %%ebx \n\t" // %ebx++ (i++)
"dec %%ecx;" // %ecx-- (n - 1)
"jmp .schleife;" // jump .schleife
".end: "
: "=a" (result) // output operands result = %eax
: "a" (result), "b" (i), "c" (n) // input operands: %eax = result, %ebx = i, %ecx = n
);
//} //für Zeitmessung einkommentieren
printf("Fakultaet: %d\n", result);
}