Beispiel #1
0
 // S:=s + 1; M[s]:= i+ 1; i:=t
 public int Call(int n, int i)
 {
     StackPointer++;
     DataStack.Add(0);
     DataStack[StackPointer] = i + 1;
     return(n);
 }
Beispiel #2
0
        // S = s + 1, M[s] = k
        public void LoadConstant(int kI)
        {
            int k = kI;

            DataStack.Add(0);
            StackPointer++;
            DataStack[StackPointer] = k;
        }
Beispiel #3
0
        // For k:=0 till n-1, do { s:=s + 1; M[s]:=M[m+k] }
        public void Allocate(int mI, int nI)
        {
            int k;

            for (k = 0; k <= (nI - 1); k++)
            {
                DataStack.Add(mI + k);
                StackPointer++;
                DataStack[StackPointer] = DataStack[mI + k];
            }
        }
Beispiel #4
0
 // S = s + 1, M[s] = M[n]
 public void LoadValue(int nI)
 {
     DataStack.Add(0);
     StackPointer++;
     DataStack[StackPointer] = DataStack[nI];
 }
Beispiel #5
0
 // S:=s + 1; M[s]:= “next input value”.
 public void Read(int value)
 {
     DataStack.Add(value);
     StackPointer++;
     DataStack[StackPointer] = value;
 }