Example #1
0
 public override void Compile(AsmParser parser, AsmSection output)
 {
     var translation = new OpcodeTranslation { Opcode = _opcodeTemplate };
     var dest = parser.ReadDesRound();
     translation.DesRound = dest;
     output.EmitCode(translation.Opcode);
 }
Example #2
0
 protected override void Compile(AsmSection output)
 {
     var target = Target / 2;
     var translation = new OpcodeTranslation { Opcode = _opcodeTemplate, Offset22High = (byte)(target >> 16) };
     output.EmitCode(translation.Opcode);
     output.EmitCode((ushort)(target & 0xffff));
 }
 protected override void Compile(AsmSection output)
 {
     var translation = new OpcodeTranslation {
         Opcode = _opcodeTemplate,
         StatusBitNumber = Bit
     };
     output.EmitCode(translation.Opcode);
 }
Example #4
0
 protected override void Compile(AsmSection output)
 {
     var translation = new OpcodeTranslation {
         Opcode = _opcodeTemplate,
         Destination32 = Register
     };
     output.EmitCode(translation.Opcode);
 }
Example #5
0
 protected override void Compile(AsmSection output)
 {
     var translation = new OpcodeTranslation {
         Opcode = _opcodeTemplate,
         SpmIncrement = PostIncrement
     };
     output.EmitCode(translation.Opcode);
 }
Example #6
0
 protected override void Compile(AsmSection output)
 {
     if (NoArgs) {
         output.EmitCode(0x95c8);
     } else {
         var translation = new OpcodeTranslation { Opcode = 0x9004, Destination32 = Destination, Increment = Increment };
         output.EmitCode(translation.Opcode);
     }
 }
Example #7
0
 public override void Compile(AsmParser parser, AsmSection output)
 {
     var translation = new OpcodeTranslation { Opcode = _opcodeTemplate };
     var dest = parser.ReadReg8();
     translation.Destination8 = dest;
     parser.ReadToken(TokenType.Comma);
     var reg = parser.ReadReg8();
     translation.Register8 = reg;
     output.EmitCode(translation.Opcode);
 }
Example #8
0
        protected override void Compile(AsmSection output)
        {
            var translation = new OpcodeTranslation {
                Opcode = GetOpcodeTemplate(Operand),
                Destination32 = Source,
                Increment = Operand.Increment,
                Decrement = Operand.Decrement
            };

            output.EmitCode(translation.Opcode);
        }
Example #9
0
        public override void Compile(AsmParser parser, AsmSection output)
        {
            var dest = parser.ReadReg32();
            parser.ReadToken(TokenType.Comma);
            var operand = parser.ReadIndirectWithDisplacement();

            var translation = new OpcodeTranslation {
                Opcode = GetOpcodeTemplate(operand.Register),
                Destination32 = dest,
                Displacement = operand.Displacement
            };

            output.EmitCode(translation.Opcode);
        }
Example #10
0
 public static new BrbcOpcode FromOpcode(ushort opcode)
 {
     var translation = new OpcodeTranslation { Opcode = opcode };
     var bit = translation.BitNumber;
     var delta = (short)(translation.Offset7 * 2);
     switch (bit) {
         case 0: return new BrccOpcode { Delta = delta };
         case 1: return new BrneOpcode { Delta = delta };
         case 2: return new BrplOpcode { Delta = delta };
         case 3: return new BrvcOpcode { Delta = delta };
         case 4: return new BrgeOpcode { Delta = delta };
         case 5: return new BrhcOpcode { Delta = delta };
         case 6: return new BrtcOpcode { Delta = delta };
         case 7: return new BridOpcode { Delta = delta };
         default:
             return new BrbcOpcode { Bit = bit, Delta = delta };
     }
 }
 public static new BrbsOpcode FromOpcode(ushort opcode)
 {
     var translation = new OpcodeTranslation { Opcode = opcode };
     var bit = translation.BitNumber;
     var delta = (short)(translation.Offset7 * 2);
     switch (bit) {
         case 0: return new BrcsOpcode { Delta = delta };
         case 1: return new BreqOpcode { Delta = delta };
         case 2: return new BrmiOpcode { Delta = delta };
         case 3: return new BrvsOpcode { Delta = delta };
         case 4: return new BrltOpcode { Delta = delta };
         case 5: return new BrhsOpcode { Delta = delta };
         case 6: return new BrtsOpcode { Delta = delta };
         case 7: return new BrieOpcode { Delta = delta };
         default:
             return new BrbsOpcode { Bit = bit, Delta = delta };
     }
 }
 public static new BsetOpcode FromOpcode(ushort opcode)
 {
     var translation = new OpcodeTranslation {
         Opcode = opcode
     };
     var bit = translation.StatusBitNumber;
     switch (bit) {
         case 0: return new SecOpcode();
         case 1: return new SezOpcode();
         case 2: return new SenOpcode();
         case 3: return new SevOpcode();
         case 4: return new SesOpcode();
         case 5: return new SehOpcode();
         case 6: return new SetOpcode();
         case 7: return new SeiOpcode();
         default:
             return new BsetOpcode { Bit = bit };
     }
 }
 public static new BclrOpcode FromOpcode(ushort opcode)
 {
     var translation = new OpcodeTranslation {
         Opcode = opcode
     };
     var bit = translation.StatusBitNumber;
     switch (bit) {
         case 0: return new ClcOpcode();
         case 1: return new ClzOpcode();
         case 2: return new ClnOpcode();
         case 3: return new ClvOpcode();
         case 4: return new ClsOpcode();
         case 5: return new ClhOpcode();
         case 6: return new CltOpcode();
         case 7: return new CliOpcode();
         default:
             return new BclrOpcode { Bit = bit };
     }
 }
Example #14
0
        public override void Compile(AsmParser parser, AsmSection output)
        {
            if (parser.IsEndOfLine) {
                output.EmitCode(_opcodeTemplate);
                return;
            }

            var dest = parser.ReadReg32();

            parser.ReadToken(TokenType.Comma);

            var zReg = parser.ReadToken(TokenType.Literal);
            if (zReg.StringValue.ToLower() != "z") throw new TokenException("Z register expected", zReg);

            var increment = false;
            if (!parser.IsEndOfLine) {
                parser.ReadToken(TokenType.Plus);
                increment = true;
            }

            var translation = new OpcodeTranslation { Opcode = 0x9006, Destination32 = dest, Increment = increment };
            output.EmitCode(translation.Opcode);
        }
Example #15
0
 protected override void Compile(AsmSection output)
 {
     var translation = new OpcodeTranslation { Opcode = _opcodeTemplate, Offset12 = (short) (Delta / 2) };
     output.EmitCode(translation.Opcode);
 }
Example #16
0
 protected override void Compile(AsmSection output)
 {
     var translation = new OpcodeTranslation { Opcode = _opcodeTemplate, RegW24 = Register, Imm6 = Value };
     output.EmitCode(translation.Opcode);
 }