Mercurial > lcfOS
diff python/ppci/target/arm/instructions.py @ 356:52492b304adf
Added newline to print
author | Windel Bouwman |
---|---|
date | Fri, 14 Mar 2014 13:02:16 +0100 |
parents | 5477e499b039 |
children | 42343d189e14 |
line wrap: on
line diff
--- a/python/ppci/target/arm/instructions.py Fri Mar 14 10:30:13 2014 +0100 +++ b/python/ppci/target/arm/instructions.py Fri Mar 14 13:02:16 2014 +0100 @@ -229,6 +229,43 @@ opcode = 0b0001100 +class And1(OpRegRegReg): + mnemonic = 'AND' + opcode = 0b0000000 + + +class ShiftBase(ArmInstruction): + """ ? rd, rn, rm """ + def __init__(self, rd, rn, rm): + super().__init__() + self.rd = rd + self.rn = rn + self.rm = rm + + def encode(self): + self.token[0:4] = self.rn.num + self.token[4:8] = self.opcode + self.token[8:12] = self.rm.num + self.token[12:16] = self.rd.num + self.token.S = 0 # Set flags + self.token[21:28] = 0b1101 + self.token.cond = 0xE # Always! + return self.token.encode() + + def __repr__(self): + return '{} {}, {}, {}'.format(self.mnemonic, self.rd, self.rn, self.rm) + + +class Lsr1(ShiftBase): + mnemonic = 'LSR' + opcode = 0b0011 + + +class Lsl1(ShiftBase): + mnemonic = 'LSL' + opcode = 0b0001 + + class OpRegRegImm(ArmInstruction): """ add rd, rn, imm12 """ def __init__(self, rd, rn, imm):