Module stm8dce.asm_analysis
This module provides classes and functions helpful for analyzing SDCC generated STM8 assembly code.
Functions
def constant_by_filename_name(constants, filename, name)
-
Returns a constant object matching by filename and name from a list of constants.
Args
constants
:list
- List of Constant objects.
filename
:str
- Filename to match.
name
:str
- Name of the constant to match.
Returns
Constant
- Matching Constant object.
Raises
SystemExit
- If multiple definitions for the constant are found.
def constants_by_name(constants, name)
-
Returns a list of constant objects with the specified name.
Args
constants
:list
- List of Constant objects.
name
:str
- Name of the constant to match.
Returns
list
- List of matching Constant objects.
def function_by_filename_name(functions, filename, name)
-
Returns a function object matching by filename and name from a list of functions.
Args
functions
:list
- List of Function objects.
filename
:str
- Filename to match.
name
:str
- Name of the function to match.
Returns
Function
- Matching Function object.
Raises
SystemExit
- If multiple definitions for the function are found.
def functions_by_name(functions, name)
-
Returns a list of function objects with the specified name.
Args
functions
:list
- List of Function objects.
name
:str
- Name of the function to match.
Returns
list
- List of matching Function objects.
def functions_referencing_external(functions, external_symbol)
-
Returns a list of function objects referencing an external symbol.
Args
functions
:list
- List of Function objects.
external_symbol
:str
- Name of the external symbol to match.
Returns
list
- List of matching Function objects.
def initializers_referencing_external(initializers, external_symbol)
-
Returns a list of initializer objects referencing an external symbol.
Args
initializers
:list
- List of Initializer objects.
external_symbol
:str
- Name of the external symbol to match.
Returns
list
- List of matching Initializer objects.
def interrupt_handlers(functions)
-
Returns a list of all interrupt handlers in the list of functions.
Args
functions
:list
- List of Function objects.
Returns
list
- List of interrupt handler Function objects.
def traverse_calls(functions, top)
-
Traverse all calls made by a function and return a list of all traversed functions.
Args
functions
:list
- List of Function objects.
top
:Function
- The top function to start traversal from.
Returns
list
- List of all traversed Function objects.
Classes
class Constant
-
Class to store constant definitions.
Input Attributes: path (str): Path of the file the constant is defined in. start_line_number (int): Start line of the constant. name (str): Name of the constant. end_line_number (int): End line of the constant.
Generated Attributes: global_defs (list): List of resolved global definitions associated with the constant (See resolve_globals).
The intended use of this class is to first parse the input attributes and then call the resolve_* functions
Methods
def __init__(self, path, start_line_number, name)
-
Initialize self. See help(type(self)) for accurate signature.
def __repr__(self)
-
Return repr(self).
def __str__(self)
-
Return str(self).
def print(self)
-
Prints the details of the constant.
def resolve_globals(self, globals)
-
Resolves global definitions for the constant.
Args
globals
:list
- List of all GlobalDef objects.
class Function
-
Class to store function definitions.
Input Attributes: path (str): Path of the file the function is defined in. start_line_number (int): Start line of the function. name (str): Name of the function. end_line_number (int): End line of the function. calls_str (list): List of calls made by the function. long_read_labels_str (list): List of long read labels.
Generated Attributes: calls (list): List of resolved functions called by the function (See resolve_calls). external_calls (list): List of external functions (in rel & lib files) called by the function. constants (list): List of resolved constants read by the function (See resolve_constants). external_constants (list): List of external constants (in rel & lib files) read by the function. global_defs (list): List of resolved global definitions used by the function (See resolve_globals). fptrs (list): List of resolved function pointers assigned by the function (See resolve_fptrs). isr_def (IntDef): Resolved interrupt definition associated with the function (See resolve_isr). empty (bool): Indicates if the function is empty.
The intended use of this class is to first parse the input attributes and then call the resolve_* functions to resolve the generated attributes.
Methods
def __init__(self, path, start_line_number, name)
-
Initialize self. See help(type(self)) for accurate signature.
def __repr__(self)
-
Return repr(self).
def __str__(self)
-
Return str(self).
def print(self)
-
Prints the details of the function.
def resolve_calls(self, functions)
-
Resolves function calls for the function.
Precondition: Globals of all functions have been resolved first.
Args
functions
:list
- List of all Function objects.
def resolve_constants(self, constants)
-
Resolves constants for the function.
Args
constants
:list
- List of all Constant objects.
def resolve_fptrs(self, functions)
-
Resolves function pointers assigned by the function.
Args
functions
:list
- List of all Function objects.
def resolve_globals(self, globals)
-
Resolves global definitions for the function.
Args
globals
:list
- List of all GlobalDef objects.
def resolve_isr(self, interrupts)
-
Resolves interrupt definitions for the function.
Args
interrupts
:list
- List of all IntDef objects.
class GlobalDef
-
Class to store global definitions.
Attributes
path
:str
- Path of the file the global is defined in.
name
:str
- Name of the global.
line_number
:int
- Line number of the global definition.
Methods
def __init__(self, path, line_number, name)
-
Initialize self. See help(type(self)) for accurate signature.
def __repr__(self)
-
Return repr(self).
def __str__(self)
-
Return str(self).
def print(self)
-
Prints the details of the global definition.
class Initializer
-
Class to store initializer definitions.
Input Attributes: path (str): Path of the file the initializer is defined in. start_line_number (int): Start line of the initializer. name (str): Name of the initializer. end_line_number (int): End line of the initializer. pointers_str (list): List of pointers defined by the initializer. Pointers store absolute labels.
Generated Attributes: pointers (list): List of resolved pointers associated with the initializer (See resolve_pointers).
The intended use of this class is to first parse the input attributes and then call the resolve_* functions
Methods
def __init__(self, path, start_line_number, name)
-
Initialize self. See help(type(self)) for accurate signature.
def __repr__(self)
-
Return repr(self).
def __str__(self)
-
Return str(self).
def print(self)
-
Prints the details of the initializer.
def resolve_pointers(self, functions, constants)
class IntDef
-
Class to store interrupt definitions. Equivalent to GlobalDef, but prints differently.
Attributes
path
:str
- Path of the file the interrupt is defined in.
name
:str
- Name of the interrupt.
line_number
:int
- Line number of the interrupt definition.
Methods
def __init__(self, path, line_number, name)
-
Initialize self. See help(type(self)) for accurate signature.
def __repr__(self)
-
Return repr(self).
def __str__(self)
-
Return str(self).
def print(self)
-
Prints the details of the interrupt definition.