예제 #1
0
            public static Reg GetRegPart(Reg r, int size)
            {
                if (r == EAX || r == AL || r == AH)
                {
                    if (size == 1) { return AL; }
                    else if (size == 2) { return AH; }
                    else if (size == 4) { return EAX; }
                }
                else if (r == EBX || r == BL || r == BH)
                {
                    if (size == 1) { return BL; }
                    else if (size == 2) { return BH; }
                    else if (size == 4) { return EBX; }
                }
                else if (r == ECX || r == CL || r == CH)
                {
                    if (size == 1) { return CL; }
                    else if (size == 2) { return CH; }
                    else if (size == 4) { return ECX; }
                }
                else if (r == EDX || r == DL || r == DH)
                {
                    if (size == 1) { return DL; }
                    else if (size == 2) { return DH; }
                    else if (size == 4) { return EDX; }
                }

                return null;
            }
예제 #2
0
 public Addr(Addr addr)
 {
     this.reg = addr.reg;
     this.offset = addr.offset;
     this.addr = addr.addr;
     this.size = addr.size;
     this.cast = addr.cast;
     this.variable = addr.variable;
 }
예제 #3
0
        public MatchCollection Matchs(Regex regex, string input)
        {
            var r = new Reg(regex, input);
            r.OnMatchComplete += MatchCompleteHandler;

            var t = new Thread(r.Matchs);
            t.Start();
            Sleep(t);
            return _mc;
        }
예제 #4
0
파일: FCodeEmit.cs 프로젝트: nomit007/f4
 public FCodeEmit(FTypeEmit parent, FBuf fcode, CILInstructions code, Reg[] regs, FTypeRef ret)
 {
     this.pod      = parent.pod;
       this.emitter  = parent.emitter;
       this.parent   = parent;
       this.buf      = fcode.m_buf;
       this.len      = fcode.m_len;
       this.code     = code;
       this.podClass = FanUtil.toDotnetTypeName(pod.m_podName, "$Pod", false);
       this.jumps    = new Jumps(code);
       this.regs     = regs;
       this.ret      = ret;
 }
예제 #5
0
        public void CGenTest(Env env, Reg ret, CGenState state) {
            // test cond
            switch (ret) {
                case Reg.EAX:
                    state.TESTL(Reg.EAX, Reg.EAX);
                    break;

                case Reg.ST0:
                    /// Compare expr with 0.0
                    /// < see cref = "BinaryArithmeticComp.OperateFloat(CGenState)" />
                    state.FLDZ();
                    state.FUCOMIP();
                    state.FSTP(Reg.ST0);
                    break;

                default:
                    throw new InvalidProgramException();
            }
        }
예제 #6
0
파일: DosBoxOPL.cs 프로젝트: scemino/nscumm
        public void Init(int rate)
        {
            Free();

            _reg = new Reg();
            for (int i = 0; i < _chip.Length; i++)
            {
                _chip[i] = new OplChip();
            }
            _emulator = new Chip();

            InitTables();
            _emulator.Setup(rate);

            if (_type == OplType.DualOpl2)
            {
                // Setup opl3 mode in the hander
                _emulator.WriteReg(0x105, 1);
            }

            _rate = rate;
        }
예제 #7
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void CMPL(Int32 imm, Reg ee) => CMPL($"${imm}", RegToString(ee));
예제 #8
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void DIVL(Reg er) => DIVL(RegToString(er));
예제 #9
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void CMPL(Reg er, Reg ee) => CMPL(RegToString(er), RegToString(ee));
예제 #10
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void SUBL(Reg er, Reg ee, String comment = "") => SUBL(RegToString(er), RegToString(ee), comment);
예제 #11
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void IDIVL(Reg er) => IDIVL(RegToString(er));
예제 #12
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public Int32 CGenPushLong(Reg src) {
     PUSHL(src);
     this.StackSize += 4;
     return this.StackSize;
 }
예제 #13
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 private void FILDL(Int32 offset, Reg dst) => FILDL($"{offset}({RegToString(dst)})");
예제 #14
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void SHRL(Reg er, Reg ee) => SHRL(RegToString(er), RegToString(ee));
예제 #15
0
 public void Registration()
 {
     var registration = new Reg();
     registration.ShowDialog();
 }
예제 #16
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void SALL(Reg er, Reg ee) {
     SALL(RegToString(er), RegToString(ee));
 }
예제 #17
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public static String RegToString(Reg reg) => reg_strs[reg];
예제 #18
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void ORL(Reg er, Reg ee, String comment = "") {
     ORL(RegToString(er), RegToString(ee), comment);
 }
예제 #19
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void ANDB(Int32 er, Reg ee) => ANDB($"${er}", RegToString(ee));
예제 #20
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void ANDL(Reg er, Reg ee) => ANDL(RegToString(er), RegToString(ee));
예제 #21
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void TESTL(Reg er, Reg ee) => TESTL(RegToString(er), RegToString(ee));
예제 #22
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void ADDL(Reg er, Reg ee, String comment = "") => ADDL(RegToString(er), RegToString(ee), comment);
예제 #23
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void SETNA(Reg dst) => SETNA(RegToString(dst));
예제 #24
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void IMUL(Reg er) {
     IMUL(RegToString(er));
 }
예제 #25
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void CGenPopLong(Int32 saved_size, Reg dst) {
     if (this.StackSize == saved_size) {
         POPL(dst);
         this.StackSize -= 4;
     } else {
         MOVL(-saved_size, Reg.EBP, dst);
     }
 }
예제 #26
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void MUL(Reg er) {
     MUL(RegToString(er));
 }
예제 #27
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void SHRL(Int32 er, Reg ee) => SHRL($"${er}", RegToString(ee));
예제 #28
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void SUBL(Int32 er, Reg ee, String comment = "") => SUBL($"${er}", RegToString(ee), comment);
예제 #29
0
        private int GetRegLocalization(Reg reg)
        {
            int loc = 0;

            switch (reg)
            {
                case Reg.BatWing: loc = 1023960; break;
                case Reg.GraveDust: loc = 1023983; break;
                case Reg.DaemonBlood: loc = 1023965; break;
                case Reg.NoxCrystal: loc = 1023982; break;
                case Reg.PigIron: loc = 1023978; break;
                case Reg.Bone: loc = 1023966; break;
                case Reg.DragonBlood: loc = 1023970; break;
                case Reg.FertileDirt: loc = 1023969; break;
                case Reg.DaemonBone: loc = 1023968; break;
            }

            if (loc == 0)
                loc = 1044353 + (int)reg;

            return loc;
        }
예제 #30
0
파일: CGen.cs 프로젝트: phisiart/C-Compiler
 public void XORL(Reg er, Reg ee) {
     XORL(RegToString(er), RegToString(ee));
 }