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

Subversion Repositories sardmips

[/] [sardmips/] [trunk/] [PROGRAMMING_exception/] [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
 
33
int main(void)
34
{
35
        int a[12];
36
        int b;
37
        int c = 23;
38
        int d = 24;
39
        int i;
40
 
41
        a[0]=13;
42
        a[1]=34;
43
        a[2]=86;
44
        a[3]=23;
45
        a[4]=52;
46
        a[5]=43;
47
        a[6]=45;
48
        a[7]=87;
49
        a[8]=12;
50
        a[9]=24;
51
        a[10]=35;
52
        a[11]=100;
53
 
54
        b = c*d;
55
 
56
        asm("nop");
57
 
58
        //quicksort(a,0,11);
59
        for(i = 0; i < 12; i++)
60
           a[i] = c*i;
61
 
62
        memstore( 0x00001000 , a[0]  );
63
        memstore( 0x00001004 , a[1]  );
64
        memstore( 0x00001008 , a[2]  );
65
        memstore( 0x0000100C , a[3]  );
66
        memstore( 0x00001010 , a[4]  );
67
        memstore( 0x00001014 , a[5]  );
68
        memstore( 0x00001018 , a[6]  );
69
        memstore( 0x0000101C , a[7]  );
70
        memstore( 0x00001020 , a[8]  );
71
        memstore( 0x00001024 , a[9]  );
72
        memstore( 0x00001028 , a[10] );
73
        memstore( 0x0000102c , a[11] );
74
        memstore( 0x00001030 , b     );
75
 
76
        asm("nop");
77
        asm("nop");
78
        asm("nop");
79
        asm("nop");
80
 
81
        memstore(ADDR_STOP,0);
82
 
83
        return 0;
84
 
85
}

powered by: WebSVN 2.1.0

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