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
class AddI_T2(rdn, imm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class AddI_T3(rd, rn, imm, setflags=0)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class AddI_T4(rd, rn, imm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class AddsR(rd, rn, rm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class AndI(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Ands(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class AsrI(rd, rm, im5)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
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)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Eors(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class IT(cond, mask)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
  • cond (Cond) –

  • mask (str) –

class Ldmia(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class LdmiaW(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Ldr(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class LdrW(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class LdrWI12(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class LdrWLit(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class LdrWR(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Ldrb(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Ldrh(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class LslsI(rd, rm, im5)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class LsrsI(rd, rm, im5)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class MovT1(rd, rm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class MovT2(rd, rm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class OrrI(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Orrs(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

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)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class StmiaW(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Str(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class StrW(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class StrWI12(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class StrWR(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Strb(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class Strh(*args, **kwargs)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

class SubI_T1(rd, rn, im3)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class SubI_T2(rdn, imm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class SubI_T3(rd, rn, imm, setflags=0)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class SubI_T4(rd, rn, imm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
class SubsR(rd, rn, rm)

Bases: flopz.arch.arm.thumb.instructions.ThumbInstruction

Parameters
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
bytes()

Get the bytes representation of the instruction

Return type

bytes

class ThumbInstructionForm

Bases: object

Instruction Forms apply the fixed bits and the operands to the instruction objects.

parse(instruction, spec)
Parameters
class ThumbInstructionForm32

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormASCMI

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormASI

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormASR

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormB

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormB32

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbInstructionFormCB

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormCB32

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbInstructionFormDPR

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormDPmod12I32

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbInstructionFormIT

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionFormMISC

parse(instruction, spec)
Parameters
class ThumbInstructionFormLdrL32

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbInstructionFormMISC

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormPushPop

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionFormMISC

parse(instruction, spec)
Parameters
class ThumbInstructionFormSDP

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormSLI

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormSZE

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionFormMISC

parse(instruction, spec)
Parameters
class ThumbInstructionFormShiftMove

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormStmiaLdmia

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbInstructionFormStmiaLdmiaW

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbInstructionFormStrLdrImmT4

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbInstructionFormStrLdrT3

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbInstructionFormatDPpl12I32

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
class ThumbinstructionFormSLIHW

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm

parse(instruction, spec)
Parameters
class ThumbinstructionFormStrLdrRegT2

Bases: flopz.arch.arm.thumb.instructions.ThumbInstructionForm32

parse(instruction, spec)
Parameters
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
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

Module contents