Mercurial > lcfOS
view python/ppci/target/msp430/msp430.py @ 342:86b02c98a717 devel
Moved target directory
author | Windel Bouwman |
---|---|
date | Sat, 01 Mar 2014 15:40:31 +0100 |
parents | python/target/msp430.py@4d204f6f7d4e |
children | b4882ff0ed06 |
line wrap: on
line source
import struct import types from ..basetarget import Register, Instruction, Target from ppci.asmnodes import ASymbol, ANumber from ppci import CompilerError from .registers import r10, r11, r12, r13, r14, r15 from .instructions import Reti, Mov, Add # Create the target class (singleton): class Msp430Target(Target): def __init__(self): super().__init__('msp430') # Registers: self.add_keyword('r10') self.add_keyword('r11') self.add_keyword('r12') self.add_keyword('r13') self.add_keyword('r14') self.add_keyword('r15') self.add_rule('reg', ['r10'], lambda rhs: r10) self.add_rule('reg', ['r11'], lambda rhs: r11) self.add_rule('reg', ['r12'], lambda rhs: r12) self.add_rule('reg', ['r13'], lambda rhs: r13) self.add_rule('reg', ['r14'], lambda rhs: r14) self.add_rule('reg', ['r15'], lambda rhs: r15) # Instructions rules: self.add_keyword('mov') self.add_instruction(['mov', 'reg', ',', 'reg'], lambda rhs: Mov(rhs[1], rhs[3])) self.add_instruction(['mov', 'imm16', ',', 'reg'], lambda rhs: Mov(rhs[1], rhs[3])) self.add_keyword('add') self.add_instruction(['add', 'reg', ',', 'reg'], lambda rhs: Add(rhs[1], rhs[3])) self.add_keyword('reti') self.add_instruction(['reti'], lambda rhs: Reti()) # Constants: self.add_rule('imm32', ['val32'], lambda x: x[0].val) self.add_rule('imm32', ['imm16'], lambda x: x[0]) self.add_rule('imm16', ['val16'], lambda x: x[0].val) self.add_rule('imm16', ['imm8'], lambda x: x[0]) self.add_rule('imm8', ['val8'], lambda x: x[0].val) self.add_rule('imm8', ['imm5'], lambda x: x[0]) self.add_rule('imm5', ['val5'], lambda x: x[0].val) self.add_rule('imm5', ['imm3'], lambda x: x[0]) self.add_rule('imm3', ['val3'], lambda x: x[0].val) msp430target = Msp430Target() # Target description for the MSP430 processor msp430target.registers.append(r10) msp430target.registers.append(r11) msp430target.registers.append(r12) msp430target.registers.append(r13) msp430target.registers.append(r14) msp430target.registers.append(r15)