Architectures In Python (Debugging with GDB)

#### 23.3.2.36 Python representation of architectures ¶

GDB uses architecture specific parameters and artifacts in a number of its various computations. An architecture is represented by an instance of the `gdb.Architecture` class.

A `gdb.Architecture` class has the following methods:

Function: Architecture.name () ¶

  Return the name (string value) of the architecture.

Function: Architecture.disassemble (start_pc [, end_pc [, count]]) ¶

  Return a list of disassembled instructions starting from the memory address start_pc. The optional arguments end_pc and count determine the number of instructions in the returned list. If both the optional arguments end_pc and count are specified, then a list of at most count disassembled instructions whose start address falls in the closed memory address interval from start_pc to end_pc are returned. If end_pc is not specified, but count is specified, then count number of instructions starting from the address start_pc are returned. If count is not specified but end_pc is specified, then all instructions whose start address falls in the closed memory address interval from start_pc to end_pc are returned. If neither end_pc nor count are specified, then a single instruction at start_pc is returned. For all of these cases, each element of the returned list is a Python `dict` with the following string keys:

  `addr`

    The value corresponding to this key is a Python long integer capturing the memory address of the instruction.

  `asm`

    The value corresponding to this key is a string value which represents the instruction with assembly language mnemonics. The assembly language flavor used is the same as that specified by the current CLI variable `disassembly-flavor`. See Source and Machine Code.

  `length`

    The value corresponding to this key is the length (integer value) of the instruction in bytes.

Function: Architecture.integer_type (size [, signed]) ¶

  This function looks up an integer type by its size, and optionally whether or not it is signed.

  size is the size, in bits, of the desired integer type. Only certain sizes are currently supported: 0, 8, 16, 24, 32, 64, and 128.

  If signed is not specified, it defaults to `True`. If signed is `False`, the returned type will be unsigned.

  If the indicated type cannot be found, this function will throw a `ValueError` exception.

Function: Architecture.registers ([ reggroup ]) ¶

  Return a `gdb.RegisterDescriptorIterator` (see Registers In Python) for all of the registers in reggroup, a string that is the name of a register group. If reggroup is omitted, or is the empty string, then the register group ‘`all`’ is assumed.

Function: Architecture.register_groups () ¶

  Return a `gdb.RegisterGroupsIterator` (see Registers In Python) for all of the register groups available for the `gdb.Architecture`.