OpenCores
URL https://opencores.org/ocsvn/sardmips/sardmips/trunk

Subversion Repositories sardmips

[/] [sardmips/] [trunk/] [PROGRAMMING_CLASSIC/] [My_Program.c] - Blame information for rev 18

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 4 igorloi
#define memstore(address,save) { \
2
unsigned int *ctrlstore = (unsigned int *) address; \
3
*ctrlstore = save;}
4
 
5
#define ADDR_IO       0x00009000
6
#define ADDR_STOP     0x7FFFFFFC
7
#define ADDR_QUICK    0x00003F00
8
 
9
 
10
void quicksort (int a[], int lo, int hi)
11
{
12
    int i=lo, j=hi, h;
13
    int x=a[(lo+hi)/2];
14
 
15
    //  partition
16
    do
17
    {
18
        while (a[i]<x) i++;
19
        while (a[j]>x) j--;
20
        if (i<=j)
21
        {
22
            h=a[i]; a[i]=a[j]; a[j]=h;
23
            i++; j--;
24
        }
25
    } while (i<=j);
26
 
27
    //  recursion
28
    if (lo<j) quicksort(a, lo, j);
29
    if (i<hi) quicksort(a, i, hi);
30
}
31
 
32
int main(void)
33
{
34
        int a[7],b,c;
35
 
36
        a[0]=13;
37
        a[1]=34;
38
        a[2]=86;
39
        a[3]=23;
40
        a[4]=52;
41
        a[5]=45;
42
        a[6]=1;
43
 
44
        asm("nop");
45
 
46
        b = a[1] * a[5];
47
        c = a[4] * a[6];
48
 
49
        quicksort(a,0,11);
50
 
51
        asm("nop");
52
 
53
        memstore( 0x00001000 , a[0]  );
54
        memstore( 0x00001004 , a[1]  );
55
        memstore( 0x00001008 , a[2]  );
56
        memstore( 0x0000100c , a[3]  );
57
        memstore( 0x00001010 , a[4]  );
58
        memstore( 0x00001014 , a[5]  );
59
        memstore( 0x00001018 , a[6]  );
60
        memstore( 0x0000101c , b     );
61
        memstore( 0x00001020 , c     );
62
 
63
        asm("nop");
64
 
65
        memstore(ADDR_STOP,0);
66
 
67
        return 0;
68
 
69
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.