예제 #1
0
파일: SSA.cs 프로젝트: AxFab/amy
        public string ToIntelASM(SSA ssa)
        {
            string reg1 = "e" + ssa.Name + "x";
              string op1 = ssa.Operand1.Value;
              if ((ssa.Operand1 as Operand).Version > 0)
            op1 = "e" + (ssa.Operand1 as Operand).Code + "x";

              if (ssa.Operator == Amy.Operator.Assign)
            return "MOV " + reg1 + ", " + op1;
              if (ssa.Operator == Amy.Operator.Add)
            return "ADD " + reg1 + ", " + op1;
              if (ssa.Operator == Amy.Operator.Sub)
            return "SUB " + reg1 + ", " + op1;
              if (ssa.Operator == Amy.Operator.Mul)
            return "MUL " + reg1 + ", " + op1;
              if (ssa.Operator == Amy.Operator.Div)
            return "DIV " + reg1 + ", " + op1;

              return "!?";
        }
예제 #2
0
파일: SSA.cs 프로젝트: AxFab/amy
        public void Push(SSA ssa)
        {
            ssa.Previous = current;
              if (top == null)
            top = ssa;
              else
            current.Next1 = ssa;
              current = ssa;

              // Console.WriteLine(this.ToIntelASM(ssa));
        }