Initial Revision
[ohcount] / test / expected_dir / assembler1.asm / assembler / comment
1 ; int gcdAsm(int a, int b)
2 ;
3 ; computes gcd(a,b) according to:
4 ; 1. a even, b   even: gcd(a,b) = 2 * gcd(a/2,b/2), 
5 ;    and remember how often this happened
6 ; 2. a even, b uneven: gcd(a,b) = gcd(a/2,b)
7 ; 3. a uneven, b   even: gcd(a,b) = gcd(a,b/2)
8 ; 4. a uneven, b uneven: a>b ? a -= b : b -= a, 
9 ;    i.e. gcd(a,b) = gcd(min(a,b),max(a,b) - min(a,b))
10 ; do 1., repeat 2. - 4. until a = 0 or b = 0
11 ; return (a + b) corrected by the remembered value from 1.
12 ; by definition: gcd(a,0) = a, gcd(0,b) = b, gcd(0,0) = 1 !