flopz.arch.arm.thumb package
Submodules
flopz.arch.arm.thumb.auto_instructions module
- class AutoBranch(*args)
Bases:
flopz.arch.auto_instruction.AutoInstruction
- expand()
- Return type
List
[ThumbInstruction
]- Returns
Regular instructions.
- exception AutoInstructionFailure(msg)
Bases:
Exception
- class AutoLoad(*args, **kwargs)
Bases:
flopz.arch.auto_instruction.AutoInstruction
- expand()
- Return type
List
[ThumbInstruction
]- Returns
Regular instructions.
- class AutoStore(*args, **kwargs)
Bases:
flopz.arch.auto_instruction.AutoInstruction
- expand()
- Return type
List
[ThumbInstruction
]- Returns
Regular instructions.
flopz.arch.arm.thumb.instructions module
- class AddI_T1(rd, rn, imm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –imm (
int
) –
- class AddI_T2(rdn, imm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rdn (
Union
[int
,ArmRegister
]) –imm (
int
) –
- class AddI_T3(rd, rn, imm, setflags=0)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –imm (
int
) –
- class AddI_T4(rd, rn, imm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –imm (
int
) –
- class AddsR(rd, rn, rm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –
- class AndI(*args, **kwargs)
- class Ands(*args, **kwargs)
- class AsrI(rd, rm, im5)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –im5 (
int
) –
- class BL_T1(offset)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
offset (
int
) –
- class B_T1(cond, offset)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
cond (
Cond
) –offset (
int
) –
- class B_T2(offset)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
offset (
int
) –
- class B_T3(cond, offset)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
cond (
Cond
) –offset (
int
) –
- class B_T4(offset)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
offset (
int
) –
- class Cond(value)
Bases:
enum.IntEnum
represents mnemonics for conditionals that can return the respective 4bit code
- AL = 14
- CC = 3
- CS = 2
- EQ = 0
- GE = 10
- GT = 12
- HI = 8
- LE = 13
- LS = 9
- LT = 11
- MI = 4
- NE = 1
- PL = 5
- VC = 7
- VS = 6
- get_bitcode()
- class EorI(*args, **kwargs)
- class Eors(*args, **kwargs)
- class IT(cond, mask)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
cond (
Cond
) –mask (
str
) –
- class Ldmia(*args, **kwargs)
- class LdmiaW(*args, **kwargs)
- class Ldr(*args, **kwargs)
- class LdrW(*args, **kwargs)
- class LdrWI12(*args, **kwargs)
- class LdrWLit(*args, **kwargs)
- class LdrWR(*args, **kwargs)
- class Ldrb(*args, **kwargs)
- class Ldrh(*args, **kwargs)
- class LslsI(rd, rm, im5)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –im5 (
int
) –
- class LsrsI(rd, rm, im5)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –im5 (
int
) –
- class MovT1(rd, rm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –
- class MovT2(rd, rm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –
- class OrrI(*args, **kwargs)
- class Orrs(*args, **kwargs)
- class POP(register_list)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
register_list (
List
[Union
[int
,ArmRegister
]]) –
- class PUSH(register_list)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
register_list (
List
[Union
[int
,ArmRegister
]]) –
- class Stmia(*args, **kwargs)
- class StmiaW(*args, **kwargs)
- class Str(*args, **kwargs)
- class StrW(*args, **kwargs)
- class StrWI12(*args, **kwargs)
- class StrWR(*args, **kwargs)
- class Strb(*args, **kwargs)
- class Strh(*args, **kwargs)
- class SubI_T1(rd, rn, im3)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –im3 (
int
) –
- class SubI_T2(rdn, imm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rdn (
Union
[int
,ArmRegister
]) –imm (
int
) –
- class SubI_T3(rd, rn, imm, setflags=0)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –imm (
int
) –
- class SubI_T4(rd, rn, imm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –imm (
int
) –
- class SubsR(rd, rn, rm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rn (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –
- class ThumbInstruction(form, spec, addr=0, bit_length=16, **kwargs)
Bases:
flopz.arch.instruction.Instruction
Base ARM Thumb Instruction class
All instructions inherit from this base class. This way, each instruction implementation only has to perform validity checks on the parameters and can then call this base classes init. The super().__init__ call has to include an instance of the InstructionForm the instruction confirms to, the spec string copied from the instruction set documentation and the values provided to the Operands as keyword arguments. This base class will then handle the parsing of the InstructionForm, which will in turn check the spec string and apply fixed bit values. Then the kwargs keys are assumed operands and the given arguments applied to set the variable bits in the instruction.
- Parameters
form (
ThumbInstructionForm
) –spec (
str
) –addr (
int
) –
- class ThumbInstructionForm
Bases:
object
Instruction Forms apply the fixed bits and the operands to the instruction objects.
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionForm32
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormASCMI
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormASI
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormASR
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormB
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormB32
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormCB
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormCB32
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormDPR
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormDPmod12I32
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormIT
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionFormMISC
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormLdrL32
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormMISC
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormPushPop
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionFormMISC
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormSDP
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormSLI
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormSZE
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionFormMISC
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormShiftMove
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormStmiaLdmia
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormStmiaLdmiaW
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormStrLdrImmT4
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormStrLdrT3
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbInstructionFormatDPpl12I32
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbinstructionFormSLIHW
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class ThumbinstructionFormStrLdrRegT2
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstructionForm32
- parse(instruction, spec)
- Parameters
instruction (
Instruction
) –spec (
str
) –
- class UB32OffsetOperand(*args)
Bases:
flopz.arch.operands.CombinedOperand
Special operand to encode the offset of the 32bit branch instruction (unconditional). This encoding includes 2 bits that are flipped depending on value sign.
- class UXTB(rd, rm)
Bases:
flopz.arch.arm.thumb.instructions.ThumbInstruction
- Parameters
rd (
Union
[int
,ArmRegister
]) –rm (
Union
[int
,ArmRegister
]) –
- decode_from_12b_imm(encoded)
- Parameters
encoded (
int
) –- Return type
int
- encode_register_list(rlist)
- Parameters
rlist (
List
[int
]) –- Return type
int
- encode_to_12b_imm(value)
- Parameters
value (
int
) –- Return type
int
- get_register_values(rlist)
- Parameters
rlist (
List
[Union
[int
,ArmRegister
]]) –- Return type
List
[int
]
- regs_as_vals(int_dependant_init)
Decorates a function so arguments of type register are converted to their int values.
flopz.arch.arm.thumb.stm32F407 module
- class Stm32F407
Bases:
flopz.arch.arm.arm_generic_arch.ARMGenericArchitecture