コード例 #1
0
 protected override void Parse(AsmParser parser)
 {
     do {
         var dest = parser.ReadReg32();
         Registers.Add(dest);
     } while (!parser.IsEndOfLine);
 }
コード例 #2
0
 public override void Compile(AsmParser parser, AsmSection output)
 {
     var zToken = parser.ReadToken(TokenType.Literal);
     if (zToken.StringValue.ToLower() != "z") throw new TokenException("Z register expected", zToken);
     parser.ReadToken(TokenType.Comma);
     var dest = parser.ReadReg32();
     var translation = new OpcodeTranslation { Opcode = _opcodeTemplate, Destination32 = dest };
     output.EmitCode(translation.Opcode);
 }
コード例 #3
0
ファイル: LddOpcode.cs プロジェクト: SavchukSergey/atma
        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);
        }
コード例 #4
0
ファイル: LpmOpcode.cs プロジェクト: SavchukSergey/atma
        protected override void Parse(AsmParser parser)
        {
            if (parser.IsEndOfLine) {
                Destination = 0;
                Increment = false;
                NoArgs = true;
                return;
            }
            NoArgs = false;
            Destination = parser.ReadReg32();

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

            Increment = false;
            if (!parser.IsEndOfLine) {
                parser.ReadToken(TokenType.Plus);
                Increment = true;
            }
        }
コード例 #5
0
ファイル: ElpmOpcode.cs プロジェクト: SavchukSergey/atma
        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);
        }
コード例 #6
0
 protected override void Parse(AsmParser parser)
 {
     Register = parser.ReadReg32();
 }
コード例 #7
0
 protected override void Parse(AsmParser parser)
 {
     Destination = parser.ReadReg32();
     parser.ReadToken(TokenType.Comma);
     Address = parser.ReadUshort();
 }
コード例 #8
0
 protected override void Parse(AsmParser parser)
 {
     Port = parser.ReadPort64();
     parser.ReadToken(TokenType.Comma);
     Register = parser.ReadReg32();
 }
コード例 #9
0
 protected override void Parse(AsmParser parser)
 {
     Address = parser.ReadUshort();
     parser.ReadToken(TokenType.Comma);
     Source = parser.ReadReg32();
 }
コード例 #10
0
ファイル: StOpcode.cs プロジェクト: SavchukSergey/atma
 protected override void Parse(AsmParser parser)
 {
     Operand = parser.ReadIndirectOperand();
     parser.ReadToken(TokenType.Comma);
     Source = parser.ReadReg32();
 }
コード例 #11
0
 protected override void Parse(AsmParser parser)
 {
     Register = parser.ReadReg32();
     parser.ReadToken(TokenType.Comma);
     Bit = parser.ReadBit();
 }
コード例 #12
0
 protected override void Parse(AsmParser parser)
 {
     Destination = parser.ReadReg32();
     parser.ReadToken(TokenType.Comma);
     Register = parser.ReadReg32();
 }
コード例 #13
0
ファイル: LdOpcode.cs プロジェクト: SavchukSergey/atma
 protected override void Parse(AsmParser parser)
 {
     Destination = parser.ReadReg32();
     parser.ReadToken(TokenType.Comma);
     Operand = parser.ReadIndirectOperand();
 }