반응형
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
#include <stdio.h>
 
void setElt (int array[], int size)
{
     int i;
     
     i = 0;
     
     while(i < size) 
     {
       array[i] = 1;
       i++;
     }
     
}
 
int getElt (int pos, int array[])
{
           return array[pos];
}
 
int main()
{
     int list[100];
     int element;
 
     setElt(list, 100);
     element = getElt(33,list);
     write(element);
   
}
Crocus




           sym 1 1 100   @ list[100]

           sym 1 101 1   @ element

setElt     proc 3 2 2

           sym 2 1 1     @ &array

           sym 2 2 1     @ size

           sym 2 3 1     @ int i

           ldc 0         @ 0

           str 2 3       @ i=0

while      nop

           lod 2 3       @ size

           lod 2 2       @ i

           lt

           fjp endwhile1

           lod 2 3       @ i

           lod 2 1       @ &array

           add           @ array[i]

           lod 2 3       @ i

           sti           @ array[i] = i

           lod 2 3       @ i

           inc           @ i++

           str 2 3       @ i = i++ 

           ujp while

endwhile1  nop

           ret

           end

getElt     proc 2 3 2

           sym 3 1 1     @ pos

           sym 3 2 1     @ &array

           lod 3 1       @ pos

           lod 3 2       @ &array

           add           @ array[pos]

           ldi           @ array[pos]

           retv          @ return

           end

           bgn 101       @ start

           ldp           

           lda 1 1       @ list

           ldc 100       @ 100

           call setElt   @ setElt(list,100)

           ldp           

           ldc 33        @ 33

           lda 1 1       @ list

           call getElt   @ getElt(33,list)

           str 1 101     @ element

           ldp

           lod 1 101     @ element

           call write    @ print

           end           @end



반응형