예제 #1
0
        public void VpConstantHighByte()
        {
            var pb = new ProgramBuilder();

            pb.Add("sum", m =>
            {
                var _ax = new RegisterStorage("ax", 0, 0, PrimitiveType.Word16);
                var _al = new RegisterStorage("al", 0, 0, PrimitiveType.Byte);
                var _ah = new RegisterStorage("ah", 0, 8, PrimitiveType.Byte);
                var _dx = new RegisterStorage("dx", 2, 0, PrimitiveType.Word16);
                var _si = new RegisterStorage("si", 6, 0, PrimitiveType.Word16);
                var ax  = m.Frame.EnsureRegister(_ax);
                var ah  = m.Frame.EnsureRegister(_ah);
                var al  = m.Frame.EnsureRegister(_al);
                var dx  = m.Frame.EnsureRegister(_dx);
                var si  = m.Frame.EnsureRegister(_si);

                m.Assign(ah, 0);

                m.Label("m0");
                m.BranchIf(m.Eq0(m.Mem8(si)), "m3done");

                m.Label("m1");
                m.Assign(al, m.Mem8(si));
                m.Assign(dx, m.IAdd(dx, ax));
                m.Goto("m0");

                m.Label("m3done");
                m.Return();
            });
            RunFileTest(pb.BuildProgram(), "Analysis/VpConstantHighByte.txt");
        }